Winz00e (ver 6.0)
Would you like to react to this message? Create an account in a few clicks or log in to continue.

[Tutorial] Simple .ANI Tutorial

+4
Sankarea
Minty Kitty
mangak (GONE)
CometStrife
8 posters

Page 1 of 16 1, 2, 3 ... 8 ... 16  Next

Go down

[Tutorial] Simple .ANI Tutorial Empty [Tutorial] Simple .ANI Tutorial

Post by CometStrife Mon Jan 10, 2011 7:15 am

Warning:

Change of Re-Distribution Policies: You can freely re-distribute this tutorial, but you MUST credit the original authors for it. Also, inform me of the site that you want to post this in first. That is all.

The websites where this tutorial is posted is listed below:
AmechA (DevilChild / AzureCrow)
Chrome Roots (Zeler)
ExtremeVS (Hikari)

Note: This Tutorial is true from v1.005 - v2.004
Now, on with the tutorial...

You will need the following items.

1. Microsoft Applocale
2. HxD Hex Editor (Or any hex editing programs)
3. Undecrypted Script.Ani File from 1.009 or less
4. A Notebook (Or really anything else that helps you to remember the numbers you will need.)

Additional Information: I understand that there is this misconception that computer don't support Simplified Chinese. However, please be clear that with Applocale, ALL computers should support the language.


*Update*
For your convenience, I have reuploaded the ANI Editing Starter Pack.

Inside contains HxD Hex Editor setup, ANI Tool V1.03, apploc.msi, My own notes and 1.005 Original Script.ani Files.
IMPORTANT : Strictly NO HOTLINKING FROM OTHER WEBSITES
Starter Pack By Zeranto I

Here are some tutorials on installing applocale
http://www.winz00e.com/t3450-guide-installing-applocale
https://www.youtube.com/watch?v=9t9iZJBwNA0
https://www.youtube.com/watch?v=THbWXMHYNrs


I would recommend that you edit the Script.ani or any other scripts on your Desktop for convenience. It would be wise to create a shortcut to the Ani tool from Applocale to reduce the hassle of always having to start the Ani Tool with applocale.
Note: Open ALL .hod and tail.dat files with the Hex Editor to avoid mistakes.



Some Basic Things you must remember for ANI modding

ASCII Hex values
0d0a means paragraphing
09 means "tab" on your keyboard
20 means spacing
30~39 means 0~9

Refer to this list for a more comprehensive list of codes: http://www.ascii.cl/htmlcodes.htm


Weapon Values
1 = Small Beam
3 = Small Missile
4 = Missile Pod (Breaks into many Small Missile)
5 = DRAGOONS
9 = Cannon
13 = Heat Beam Missiles
21 = Small Beam (But bends towards your enemy)
24 = Huge Laser (Dissapears proportionally) [Used more often]
25 = Huge Laser
55 = Laser Sword
(These are numbers you can need to remember *For Beginners*. There are still many more, but I can't remember anymore numbers, and what attacks they will give you, so this is as much as I can remember by heart.)
This is the list of Attack Types that Ephemeral has painfully come up with. All of the information in this code is credited to him.

Note: This is more helpful for modders who actually know what they are doing, if you are a beginner, just refer to the ones above.
Value | Attack Name | Requirements | Conditions
01/1 | Small Beam | None | LockBodyUpTarget
02/2 | Arrow Beam | None | LockBodyUpTarget
03/3 | 4 Scatter Missles | LoadXFile | None
04/4 | Pod Missle Scatter | LoadXFile | None
05/5 | Funnels | LoadXFile | RunProc/WeaponAttack values optional
06/6 | Vulcan | None | ATTACK value possible
07/7 | 2 Weak bombs | None | ATTACK value possible
08/8 | Lightning Laser/Small Beam Crazy Bomb | None | ATTACK value possible
09/9 | Cannon Shell | None | ATTACK value possible - RunProc/WeaponAttack values optional
10 | Drop Bomb | LoadXFile | ATTACK value possible
11 | Vulcan (Heat Seek) | None | ATTACK value possible
12 | Arrow Beam | None | Requires LockBodyUpTarget
13 | Arrow Beam (Heat Seek) | None | ATTACK value possible
14 | Thunder Laser - Requires LockDownTarget | None | ATTACK value possible - RunProc/WeaponAttack values optional
15 | Trap Laser | None | ATTACK value possible
16 | Drop Bomb | LoadXFile | ATTACK value possible
17 | Unknown - Probably Magician Type, requires LoadxFile crystals.
18 | Missile | LoadXFile | ATTACK value possible
19 | Missle (Heat Seek) | LoadXFile | ATTACK value possible
20 | Fireball | None | ATTACK value possible
21 | Curving Laser (Heat Seek) | None | ATTACK value possible
22 | Crystal Drones (Attack type) | LoadXFile | None
23 | Laser Summoning | None | RunProc/WeaponAttack values optional
24 | Huge Laser (Stays in one place, can be used for sword output) | None | ATTACK value possible - RunProc/WeaponAttack values optional
25 | Huge Laser (attached to gun output even moving) | None | ATTACK value possible - RunProc/WeaponAttack values optional
26 | Cannon Shell | None | ATTACK value possible
27 | Cannon | None | ATTACK value possible -
28 | Laser | None | ATTACK value possible - RunProc/WeaponAttack values optional
29 | Dagger Throw | LoadXFile | RunProc/WeaponAttack values optional
30 | Fire Summon | None | RunProc/WeaponAttack values optional
31 | Dagger Throw | LoadXFile | LockBodyUpTarget
32 | Dagger Impale | Requires Float and grab on tail.dat - LoadXFile | LockBodyUpTarget
33 | Dagger Summon | LoadXFile | None
55 | Sword Laser | None | ATTACK value possible - RunProc/WeaponAttack values optional
Some of the Unknown slots are filled by cr0zzmeheart.
Texture Files
0 = beam.bmp
1 = BlueBall / Beam8.png (Needs Checking)
2 = explode2
3 = burner_
4 = beam2.bmp
5 = smokeline.png
6 = Gsmoke
7 = laser 2
8 = burner
9 = burner2
10 = beamHit3
11 = X
12 = sabel
13 = sabel_line
14 = beam2
15 = beam7_
16 = BlueRedBeam
17 = smoke
18 = smoke2
19 = smokeline_b
20 = WindRing
21 = beam3
22 = beam3Hit
23 = summon
24 = BlueRedBeam2
25 = beam4
26 = beam5
27 = beam6
28 = beam7
29 = beam8
30 = sabel_line2
31 = Fire
32 = X
33 = magic
34 = beamHit2
35 = Wing
36 = wind
37 = Bomb
38 = m_circle4
39 = beamHit4 / blueLight
40 = hinoko
41 = fireAnime2
42 = sabel_line3
43 = X
44 = X
45 = X
46 = X
47 = X
48 =
49 =
50 =

More can be found here http://www.winz00e.com/t3201-guide-texture-numbers-and-scriptani-effects-advanced
With all of these settled, let's get started.  :D



What is .ANI Editing

ANI editing refers to the editing of the ANI, including attacks, movement styles (referred to as .HODs), damage, speed, and many more. Basically how the mech is potrayed by the game.

To start off, you will need to choose a script you want to edit. I reccommend scripts like KD-04_3, KD-05 to KD-06_2, KD-07 and KD-07_2. This scripts are generally more easier to mod as they contains the standard files you will see in almost every mech.

Second, break up the Script.ani with the ANI Tool included in the starter pack (I Reccommend to do this on your desktop)
*VERY IMPORTANT* Always BACK UP your work! No matter how tiny it is or not important, just back it up, because in ani editing, sometimes you have to go back to the previous section, but you do not know what it is..

Third, you will have to find what skills do you want to edit next. For example, you want to edit the attack for let's say KD-05_3's subattack 3, go to folder 60 (Look at Skills File Folder.txt to know which folders to go to in my starter pack.)

Open Tail.dat with your hex editing program. Next, scroll down to the part that you want to edit, and start editing base on what you will learn for the rest of the tutorial.



How to Find the Different Parts of a Mech?

Some commonly used abbreviations:
L = Left
R = Right
B = Back
F = Front
S = Sword
Firstly, you would have to navigate through each folders. Please read what the .hod files are before you ask me anymore questions about where these parts are etc.

Secondly, you will need a little bit of creativity, and reading comprehension skills. For instance, when you see something like L_Step, THINK!!!! L stands for left, step stands for.. Well, steps! So L_Step would have to do with something like stepping left. In the script.ani, it is essentially left strafe.

When you go to folder 22, and you see "Robo_boostdash01.hod" once again, THINK!!! Boost have something to do with boost, like thrusting, and with "dash", it would be like thrusting away and dashing. This is essentially using thrusters,when you double tap the default "Z" key in the game.

Other examples:
When you see robo_stand.. Well its easy enough, its just how the mech would stand. Pretty idiotproof if you ask me.

When you see something like robo_stand_s, it would be how the mech stands in while equipping a sword. This is not so direct so i added it here. Also, there is a limit to each gun and sword movements. The first folder, all the way to somewhere around folder 23, it would be the movements of the mech while WEILDING A GUN! The folders afterwards till somewhere around 40+ would be the movements while WIELDING A SWORD.

There is a more complicated one, so I'm going to state it here. For guarding while weilding a gun, it would be folder 19. However, sometimes, instead of seeing robo_guard, you would see robo_reflect instead. Well this would make sense considering somem mechs DON'T guard, but reflect beam attacks instead, like KD-07. If the mech reflects an attack you would see robo_reflect. If its guard, you would see robo_guard.

The sequencing of the folders goes in the following way:
Gun Movements
Sword Movements
Gun Shots
Subattack 1
Subattack 2
Thruster Shots (Shooting while flying)
Subattack 3
Thruster Subattacks (Using subattacks while flying [If there are any. Most mechs do not have]
Sword Movements
Well, that's about all I can teach you about finding the parts of a part of a script.ani. Experiment them for yourself to find out more!

Here are more examples of figuring out which folder does what.
In KD-05_3 folder 07, you see something like 01_robo_fly_up01.hod
This is essentially flying UPWARDS, since its ROBO FLY UP

In KD-05_3 folder 17, you see something like 01_Robo_Up01.hod
This is essentially WAKING UP AFTER BEING KNOCKDOWN, as the name has stated UP, as in ROBO WAKE UP!

In KD-05_3 folder 61, you see something like 01_Robo_SwordDash01.hod
This is essentially the start of Up + C, as in Forward sword slash, where the ROBO DASHES in front WITH SWORD, BEFORE IT STARTS ATTACKING THE ENEMY.
The Basic Part of an Attack

For most Original Tail.dat, the original author of the game has explained what that part does. For instance

 '1”ÔƒŒ[ƒU[
 '[0]WP [1]Ene [2]Len [3]Speed*100 [4]•*100
 '[5]’ljÁ’Ç”ö—Í(%) [6]TexNo
 RunProc2(0,1,     0,100,30,100,20,0,0,0,0,0);
I'll starts explaining the things it represents after the 1 in blue.

I would be using Weapon Type number 24 to explain. Note that this works for ALL PROJECTILES ONLY, THIS DOES NOT APPLY TO Weapon Type number 57, which is sword attack.


The 0 in green tells you which attack will come first. For instance. In a part of a script with the following attacks,

RunProc2(0,3,0,10);
RunProc2(2,3,0,10);
RunProc2(1,3,0,10);

The game will play the 0 attack first, followed by the 1 and finally the 2, so it does not really matter how you place the numbers. This is not really important, unless you have a specific order for how you want the attacks to come out as. The MAXIMUM NUMBER you can place in this is 19. If you used the number 20 or above, it would show some errors when you select the mecha, although in-game it would work fine.


The 1 in blue represents the type of attack. For instance, 1 means Small Beam, 3 means Small Missile, 4 means Missile pod... Notice anything similar? Those are the numbers you just memorised. These numbers are usually the most important things that you need to change an attack. 'nuff said, let's move on.


The 0 in red represents the part it comes from. Eg. in Script.SPT, when you scroll down to
WEAPONPOINT(0,Weapon_point.x,UP);
WEAPONPOINT(1,Weapon_point2.x,UP);
WEAPONPOINT(2,Weapon_point3.x,UP);

WEAPONPOINT(4,Shield.x,UP);
WEAPONPOINT(5,Shield_point.x,UP);
WEAPONPOINT(6,Weapon_point_nage.x,UP);
The numbers in red represents the number that you will need, so in this case, the beam will come out from Weapon_point.x (YOU HAVE TO UNDERSTAND THIS SECTION BEFORE YOU CAN MOVE ON)


Next, the 100 in yellow represents the amount of points to be deducted from your energy gauge like the one here --> [Tutorial] Simple .ANI Tutorial OSB8eGd
100 would deduct 100 points from here. 0 would mean that the energy gauge would not decrease.


Once you are done editing with whatever you want, save the script using the ANI Tool, click on -> Script, and the script you have edited will be named as GScript on your desktop. Move it over to the folder of the script that you are going to replace. Remove/Delete the Script.ani file in that mech, and rename the GScript.ani to Script.ani

Congratulations! You have completed the first part to the ANI Tutorial! To improve yourself, the only way is to study other people's scripts to get a better idea of the whole thing.


Last edited by Aesreal on Sat Dec 14, 2013 2:57 am; edited 61 times in total
CometStrife
CometStrife
(40%)-Lv7
(40%)-Lv7

Posts : 1256
Join date : 2010-11-07
Age : 29
Currently : Earth

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by CometStrife Mon Jan 10, 2011 7:29 am

Now for the alert ones, you may be wondering why I explained the attacks only halfway through.

The previous post is just an introductory lesson on .ANI editing. It is therefore imperative for the basics to get grounded into you before we move on. Not only that, changing data, while allowing the game to still work greatly boosts your confidence about .ANI editing.

Moving on, for those attacks that does not require a beam, example missiles, you can just stop after the fourth number. Up till now, you may also have realised that there are several number of words to represent the attacks, Eg. RunProc2, WeaponAttack2 and WeaponAttack. Usually, RunProc2 is used for beams, and the other two is used for attacks like missiles, by the author. However, all three can also be used for any situations.

Eg. RunProc2(0,3,  0,10); and WeaponAttack2(0,3,  0,10); and WeaponAttack(0,3,  0,10);
All 3 will still give you small missiles when attacks.

Here is a list of Attacks from what I can remember that can be used with just 4 numbers.
3 = Small Missile
4 = Missile Pod
5 = DRAGOONS
9 = Cannon
13 = Heat Beam Missiles
21 = Small Beam (But converges towards your enemy)



Laser Beam's Data

In laser beams, they do it differently.

All of the other extra numbers is what will be needed for defining a beam.
Additional Note: I would be using Weapon Type number 24 to explain. Note that this works ONLY FOR Weapon Type number 24! It MAY OR MAY NOT apply for other projectile types, this can serve as a ROUGH guide ONLY. The rest is up to you to experiment for yourself.

RunProc2(4,24,   24,200,80,150,80,28, 0,0,0,0);

I have added spaces in between to explain better. Now after reading my first tutorial, I'm sure you already understand the first 4 numbers, so let's move on.

The 80 in cyan represents the WIDTH of a beam. if you place this as 999, I think it will give you an error when the script is used...
This is an example of what it means (For the width of the beam).
A beam with the width 100
[Tutorial] Simple .ANI Tutorial FXC9nba
A beam with the width 244
[Tutorial] Simple .ANI Tutorial ZcVnudz

Extra Caution: A LARGE BEAM DOES NOT EQUAL HIGH DAMAGE. Controlling damage will be explained later on.


RunProc2(4,25,   24,200,80,150,80,28, 0,0,0,0);
The 150 in olive represents the speed. The higher the number is, the faster the beam will reach your opponent. For a sure hit accurate beam, place this value as 1000 or something. Let's move on.


RunProc2(4,25,   24,200,80,150,80,28, 0,0,0,0);
The 80 in brown represents the time the beam will stay there. It is measured in deci-seconds. If you change this to 9999, example, it will be a really long time later before the beam that is shot disappears. It is recommended to keep this value according to when you can start moving your mech again, UNLESS you want the beam to be like Wing Zero's Buster Rifle, where the beam stays even after you have move away.


RunProc2(4,25,   24,200,80,150,80,28, 0,0,0,0);
Last but not least, the 28 in violet represents the texture number (Refer to my .ANI Tutorial Part 1). In this case this means beam7 in the Texture folder.

Now you might be wondering, if that is all, what are the 0s behind? They are irritating! Well, they are for even more added effects, but they are optional. You don't have to place them there. So to save space for more attacks, instead of placing
RunProc2(4,25,   24,200,80,150,80,28, 0,0,0,0);
You can use
RunProc2(4,25,   24,200,80,150,80,28);
instead, and this will be sufficient to get the script running.



Detailed Beam Editing

This is a continuation from Laser Beam's Data

For now, some of you may like to customise your beams, make them fanciful, etc...
So now, I'm going to explain the final steps for the data bits of a typical beam command.

Note: I would be using Weapon Type number 24 to explain. Note that this works ONLY FOR Weapon Type number 24! It MAY OR MAY NOT apply for other projectile types, this can serve as a ROUGH guide ONLY. The rest is up to you to experiment for yourself.

RunProc2(4,25, 24,200,80,150,80,28, 0,0,0,0);

The 0 in white is an angle type data, meaning, it causes a beam to turn OUTWARDS towards the back of the mech, just like in the pictures
Ignore the portions cancelled out in black in the pictures.

A value of -500 was used; the beam takes a reasonable distance to turn towards the back.
[Tutorial] Simple .ANI Tutorial Gik79
This is the forefront view for you to have a better look at it when a value of -500 is used.
[Tutorial] Simple .ANI Tutorial 2gd3b

This data ONLY works with NEGATIVE numbers, (eg. -50). By now, you should have realised that the number keyed in after the negative (-) acts like a "speed turning" medium, so if you want the beam to turn instantly towards the back, use a very large negative number such as -5000, like the one shown in the picture below.
[Tutorial] Simple .ANI Tutorial B2V3q


RunProc2(4,25, 24,200,80,150,80,28, 0,0,0,0);
The 0 in orange represents vibration. Yup, it's vibration (don't get any funny ideas now), but only the mech vibrates. This can be used to show intensity, if you want to make it look like the beam shot is very intense. Note that this only works with a positive number (eg. 50). Unlike negative numbers, you need not add the positive (+) sign when you edit this bit. The greater the numerical, the stronger the intensity of the vibration.


RunProc2(4,25, 24,200,80,150,80,28, 0,0,0,0);
The 0 in darkred causes the mech to generate smoke when the beam is fired. This can be used together with the vibration numerical, as it would appears as if your beams are so strong, the mech is having trouble just to fire them, or keep her footing
[mechs are females, just to let you guys know, you call a machine "her" and not "him", example cars, ships, planes are called "her" (female), and not "him" (male)].

You can decide whatever numerical you want, so long as it does not cause any errors. However, the smoke only appears when your mech is on the ground, or near the ground. The smoke will not come out when the mech is in the air, so for the best effects, change the tail.dat such that the subattack will cause the mech to drop to the ground first before firing.


RunProc2(4,25, 24,200,80,150,80,28, 0,0,0,0);
The 0 in red makes the beam ROTATE after its shoot out, meaning, it would shoot out in a "twist and turn" manner, but it would still shoot straight, its just that the beam rotates about its line of action. The numerical is strictly 1. 0 is to deactivate, 1 is to activate.




Controling Damage & Feel of Attacks

Now, you will have definitely seen things like this so far
ATTACK(400,400,0.4,0);    AttackFlag = 1;
NOTE: You will need to get this in every time you add an attack, because this is THE MOST VITAL INFORMATION that the game needs to unleash your attack. Without this, your damage will be ziltch.
CometStrife wrote:"It does not matter if the attack is nice looking, fancy, fast, long, or epic, so long as it does not hit or does no damage, it is a lousy attack."
I shall get on with explaining what they do.

The 400 in orange represents the actual damage for that part of the script. Example, there is a missile in the section. 400 would mean that the missile deals 400 damage upon impact.

For sustained beam attacks, they are different. Like the one used for the ν Gundam's subattack 1, if your beam attack is similar to that, 400 would mean 400 DAMAGE PER SECOND, and it would be too strong, so please be careful on the damage for the attacks you are making.


The 400 in cyan represents the illusory damage at which the victim is receiving, BEFORE he/she drops down, and your lock-on turns yellow. For example, each mecha can only receive a certain amount of damage. The actual damage that the mecha receives may be say, 400. However, if you set this illusory damage to 500, although the health of the enemy takes a shock of 400, it appears to have taken 500 damage instead. This would cause it to reach its limit and fall, turning your lock-on to yellow. If you want any mech to fall instantly, then just set this something high like 1000. This would mean that any mech would feel the effects of a 1000 damage attack on it, although in reality, its health only deducts by the actual damage that it received in the value before this.


The 0.4 in green represents the distance that your opponent will move TOWARDS YOU OR AWAY FROM YOU (The Z-axis) upon getting hit by the attack. 0.4 means that it would move back by 0.4m (Of course according to the game's scale), and -0.4 means that it would move forward towards you by 0.4m.

The 0 in violet represents the distance that your opponent will move VETICALLY upon getting hit by the attack. 0.4 means that it would move UP by 0.4m (Of course according to the game's scale), and -0.4 means that it would move DOWN you by 0.4m.


Now on to AttackFlag. From what I know, they represent the rate at which the enemy FEELS the damage. Meaning, if you place this value as 0, the enemy, although is receiving damage from your beams etc, they can't FEEL the beam, so they would basically just be able to fly out of the beam. A recommended value for this would just be 3.
Note: Do not confuse FEEL OF DAMAGE with ILLUSORY DAMAGE (eg, the 400 in cyan). They are different! Feel of damage is the strength of the attack that the mech THINKS it felt. Illusory Damage is what the value of HP that the mech THINIKS is deducted. Its rather hard to explain this, so try it out for yourself to know what I'm talking about.




Laser Sword Lengths

Before anything, the folder that controls the stats of the swords would be folder 18 for 94% of the mechs (Other than most of the female mechs). Folder 18 is the folder which controls HOW the mech changes weapon to sword.

RunProc2(1,55,.1,230, 1,30,0,0,0,0,0,0);
The 55 in red, as said before represents laser sword.
If you do not want a laser sword, change this to "00" or "  " or " 0" or "0 ", without the "" of course. 0 is not a valid weapon-type, and hence no laser sword would appear.


1 is similarly explained before, let's move on.


The 230 in brown represents the length of the sword. The larger the number is, the longer the sword will be. A standard laser sword size is 200. If the sword is too long, same thing.. an error will appear.


The 1 in green represents the texture number used FOR THE BEAM SWORD. In this case, it would be BlueBall.png


The 30 in olive represents the texture number used FOR THE BEAM SWORD'S SABEL LINE. In this case, it would be sabel_line2.png

The 0 in brown represents how long the sword will stay there. For example, if you want the sword to last for 60units of time in the game's context, then change this to 60. If you want the laser sword to last until the weapon set is changed, set this as 0.

For the rest of the script, different values would alter the properties of the sword, depending on what you changed. Feel free to test them up and post it as a guide/tutorial!



Additional Information

Note: The paragraphing (0d0a) , "tab on your keyboard" (09) and spacing (20) is not necessarily needed throughout the entire script.ani. They are just there to make the overall script look more presentable.
If you have parts that you need, you can just replace them with any of these numbers to make spaces.
If you have extra parts, just fill all of them with spaces, but remember this: You CANNOT remove anything that is a dot (00), from the script, unless it is originally some other number, and someone else, or you change it to dot (00) yourself.

Regarding the above information, you may not understand of it now, but you will definitely need them later on when you understand more about .ANI Editing.


Congratulations! You have completed the second part to the ANI Tutorial! Now your scripts can be a little more unique than the rest.


Last edited by Aesreal on Sat Dec 14, 2013 3:03 am; edited 29 times in total
CometStrife
CometStrife
(40%)-Lv7
(40%)-Lv7

Posts : 1256
Join date : 2010-11-07
Age : 29
Currently : Earth

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by CometStrife Mon Jan 10, 2011 7:29 am

Editing Speed/Movements

The main folders for speed in a .ANI is supposed to be the following
Note: For the movements while WEILDING A GUN ONLY, but you control the speed of both in ONLY THE GUN FOLDER.
Walk Moveset (Folder number 2)
Flystop Moveset (Folder number 4)
Flyup Moveset (Folder number 7)
Left Step Moveset (Folder number 9)
Right Step Moveset (Folder number 10)
Front Step Moveset (Folder number 11)
Back Step Moveset (Folder number 12)
Boostdash a.k.a Flying Moveset (Folder number 22)


Note: The folders are the usually in this way for all the .ANIs. If a special script's Move Speed does not tally with this, then you will have to manually search them for yourself using the ANI_list.txt of the ANI_Output folder.

Now, let's analyse just the walking moveset. Once you understand this, the others is roughly the same.
In the folder, you will see something like
    ~ª*>W   '‰º”¼g‚Ì‚Ý
IF(@int[151]  ,==,    0);

Move=(0,0,0.08f);

ENDIF;

AnimeLoop=1;
       ?   '‰º”¼g‚Ì‚Ý
IF(@int[151]  ,==,    0);

Snd(1);


ENDIF;
  ~ª*>Y   '‰º”¼g‚Ì‚Ý
IF(@int[151]  ,==,    0);

Move=(0,0,0.08f);


ENDIF;

AnimeLoop=1;
  ~ª*>Y   '‰º”¼g‚Ì‚Ý
IF(@int[151]  ,==,    0);

Move=(0,0,0.08f);


ENDIF;

AnimeLoop=1;
       ?   '‰º”¼g‚Ì‚Ý
IF(@int[151]  ,==,    0);

Snd(1);


ENDIF;
  ~ª*>Y   '‰º”¼g‚Ì‚Ý
IF(@int[151]  ,==,    0);

Move=(0,0,0.08f);

                                                                                                                 
For the 0 in orange, 0.08 would mean that it travels at a speed of 0.08distance HORIZONTALLY every time you use that moveset. In this case, it would travel 0.08 distance forward when you are walking.. A negative number, again, similarly denotes that it would be walking backwards. This would be the z-axis in the game.

For the 0 in red, this would mean the distance it would move VERTICALLY, should this moveset be used. Eg. 0.4f would mean that it would walk VERTICALLY upwards by 0.4 distance according to the game. A value of -0.4f would mean that it would walk VERTICALLY DOWNWARDS by 0.4.. You get the gist of it. A "-" sign would ALWAYS mean the other way. In this case, this is a WALKING moveset, so of course it woould be sensible to keep this to zero. This actually represents the y-axis in the game.

For the 0.08f in cyan, it represents the distance moved along a x-axis, meaning it represents how you move LEFT or RIGHT. A positive number would allow it to move right, while a negative number makes the mech move left. Kinda like the x-axis of a math graph.

For the the f at the back of all the values, it represents the direction the mech would move. This overrides any MoveLock(); commands, so this is quite useful in most instances.
f means Forward
b means Backward (Theoretically)
l means Leftwards (Theoretically)
r means Rightwards (Theoretically)

End of section for MOVE function, so let's move on. By now, you will probably have seen FORCE(?,?,?); before in the script. so I'm gonna explain it

EXTRA PRECAUTION: Be AWARE OF THIS! For force, YOU CANNOT PUT AN EXTREMELY HIGH VALUE... A HIGH VALUE WILL PUSH YOU ALL THE WAY OUT OF THE MAP TO NOWHERE, AND THE GAME WILL CRASH IF ITS TOO FAR OFF! I recommend that you DON'T edit this, unless you are very sure of what you are doing.

But I will still tell what it does anyway..
ONLY in the Flystop Moveset will you encounter this, and ONLY fpr the Flystop, you can edit this like a normal Move Command.

Force=(0,0.04f,0);
Actually for this, the 3 numbers is the same as the Move Command, so I shall not explain anymore... However, the Force Command EXERTS a certain value of FORCE on the mech itself, it is different in a way that a value as small as 0.01 will ROCKET you all the way halfway through the sky, and as such, a value of 0.02 will cause you to fly out of the map, so be VERY CAREFUL with this.

Now you will probably be saying, but the value says 0.04f, and it does not rocket any mechs or gundams out away! Well, only for Flystop Moveset, the Force values in the game are much more lower, meaning a value of 0.01f does not get you very high into the sky, so this is the only folder you can play around with...



Basic Commands

Here are some commands that you will often see in the game, but firstly...
Tip 1: NEVER EVER FORGET THE SEMI-COLON(;) AFTER EVERY COMMAND! REMEMBER THAT OR ALL YOUR SCRIPTS WILL FAILL MISERABLY

The ... in every command indicates that you will have to fill in your own value.
CamEfffect = ...; [Values: 1/2/3(Different Camera Angles)]
Tip: Make sure to add in CamEffect = 0; for every scripts at the end of any attacks, or you would face the problem of a continuous camera (A view that does not give you back the original view before an attack is used)][/color]

GvEnable= ...; [Values: 0 (Holds the mech in the spot that it is currently at.) Use this to hold the mech in place somewhere in the air or what.]

BURNER(...); [Values: 0~99 (Displays the different sets of burners that you have, depending on the files in your script.spt.)]
For example,
BURNERSET(0,Output01.x, 0.9, UP);
BURNERSET(1,Output02.x, 0.7, UP);
BURNERSET(2,Output03.x, 0.7, UP);
BURNERSET(3,Output04.x, 0.4, DOWN);
BURNERSET(4,Output05.x, 0.4, DOWN);
BURNERSET(5,Output06.x, 0, DOWN);
BURNERSET(6,Output07.x, 0, DOWN);
BURNERSET(7,Output08.x, 0.5, UP);
BURNERSET(8,Output09.x, 0.5, UP);
The words in cyan would be the number that you should place in the ... in the command. Use this to freely control what thrusters are used etc.
Note: This is just an animation. The actual speed and size of the mech and burner, respectively, are not affected.

RunProc2(...); [What I have explained before]

WeaponAttack(...); [What I have explained before]

WeaponAttack2(...); [What I have explained before]

LaserReflect = ...; [Vaues: 0~100 (Note: 100 means 100% of the BEAMS fired at you will be reflected. 20 means 20%, and so on)]
Note: LaserReflect only reflects ALL ATTACKS that are used as RunProc2. Any attacks used as WeaponAttack/WeaponAttack2 WILL NOT BE REFLECTED


Snd(...); [Values: 0~?? (This are the numbers for the sound. If you put 0, there will still be a sound played, as the sound counting starts from 0. I never bothered about this, so I'm not sure how many sounds are there.)
Tip: 8 would be the sound for DRAGOONS release]

Code:
0 = shot.wav
1 = asiato.wav
2 = tyakuti.wav
3 = explode_m.wav
4 = explode_l.wav
5 = burner_f15.wav
6 = shot2.wav
7 = BeamHit.wav
8 = fannel.wav
9 = sword.wav
10 = sword2.wav
11 = BeamHit2.wav
12 = guard.wav
13 = bullet.wav
14 = burst01.wav
15 = bulletHit.wav
16 = BeamReflect.wav
17 = henkei.wav
18 = X
19 = X
20 = X
AttackDelay(...,...); [The first ... would be either 0, 2, 3 or 4. As you might have noticed by now, the bars on the bottom right would decrease accordingly. 0 would mean the bar would decrease on the FIRST one (Used usually for the normal "X" attack a.k.a range weapon), 2 would be the delay for Subattack 1, 3 for Subattack 2, 4 for Subattack 3. You can add in additional AttackDelay. Example, if you add in AttackDelay(3,...); and AttackDelay(4,...); in a single tail.dat, when that skill is used, both bars number 3 and 4 will both decrease accordingly. For the second set of ..., it is up to you. One bar consists of 1000 points. If you place this as 100, 1/10 of the bar will be gone, so do your own math and estimation.]
Illustrated here:
[Tutorial] Simple .ANI Tutorial IFeRQkr

LockBodyUpTarget(...,...); [Values: As you want (Makes sure that any attacks fired from THE MECH'S BODY will be aimed at a certain coordinates of the map, if it originally shoots another way)]

LockBodyDownTarget(...,...); [Values: As you want (Not really much of a difference from the LockBodyUpTarget command, but it does have significant effects when used instead. Exmaple, attacks at a higher altitude will be able to better hit the target coordinates at a lower ground, and attacks at a lower altitude would be able to hit the target coordinates at a higher ground for LockBodyUpTarget. For attacks at Mech's Body base level, both usage has no difference)]

LockArm1Target(...,...); [Values: As you want (Locks your Left Arm and all the parts at a position such that all your attacks fired from your left gun, hand, etc etc will be aimed at a certain coordinates of the map)]

LockArm2Target(...,...); [Values: As you want (Locks your Right Arm and all the parts at a position such that all your attacks fired from your left gun, hand, etc etc will be aimed at a certain coordinates of the map)]

Voice(...); [Values: Attack/S_Attack/?? (Once again, I do not care about sounds, but this commands plays a certain section of the pilot you are using. Example, Voice(Attack); would play a random Attack Voice from 1~5 whenever the attack is casted.)]
Tip: Don't use this with ExecScriptEveryTime or the sound would be played continuously, making it sound weird.


ChangeWeapon(...); [Values: GUN/SWORD (Changes weapon set)]

ShotTurnAng = ...; [Values: 0~180 (This command turns the mech according to the values you put. For example. Starting with ShotTurnAng = 99; (or anything else) It locks the mech in the position, 99degrees from the (needs to confirm from where), and the next ShotTurnAng = -6; turns the mech accordingly, since it is a opposite sign. The 6 tells you how fast or slow the mech turns.

See Wing Zero Customs for examples

Note: In order to turn the mech, you need to have a POSITIVE number, with a NEGATIVE number afterwards, and it works vice versa. If you start with positive, you face front and start turning rightwards. If you start with negative, you'll face front and turn leftwards. This command is one of the coolest command, and also one of my personal favourites]


Sub_LRKey= ...; [Values: 0~180 (Allows the mech to be able to turn at certain degrees. Usually, its a very small value like 0.3~1.0, cause each time you press the <- or -> arrow keys, the mech would turn by the degree that you placed here. If you put 180 degrees, the mech would turn to the back. Pressing the arrow key again in any direction, The mech would turn back towards the front, making you really vulnerable at the sides, so I recommend no further than 90 degrees. However, if you want to add an attack that can you can manually use, example to have a spinning attack, 180 degrees is fine, just remember to hold down the arrow keys continuously, and it should spin like crazy.) I'm not too excited about this command, because its just frustrating. With super accurate beam aims like mine.. *cough* sorry, with accurate beam aims, this command would screw up your aim]

AnimeLoop= ...; [Values: 1 (Allows certain parts of a script to be used continuously until the button controlling it is let go.) An example is the walking script above. That should give you more insights about what it is about.

Edit: It seems that this command needs something else for it to work in other scripts.]


MoveLock(); [Values: None (Allows the mech to reset its direction to the front. For example, if your last direction was... right, cause you used the thrusters and flew right, and you land, if you were to use a subattack that has Move/Force, you Will move to the right. However, if you were to add MoveLock(); you would move in front instead, meaning, this command changes the last direction that you were in, to the front.) A typical example would be the Excalibur Sword Dash in the Impulse script that Oujar made. without MoveLock();, the impulse woud have moved sideways, etc, never aimed at the enemy. With this command, you don't have to worry about adding the f/b/l/r to your MOVE commands.]

LocalRnd(...,...,...); [Values: @int value of your choice, any number, frequency (any postive number) (Local Round. It allows the @int value to go in a pattern of circle. For instance, the @int value will be at the number you picked (2nd number out of the 3) for 2 process runs. After which, it becomes another number for 2 other runs. The cycle then repeats itself.)]

Well, that is the end of all the Basic Commands for scripts. You are now considered an intermediate .ANI editor if you understand, while being able to apply what I have just said. Congratulations!


Last edited by Aesreal on Sat Dec 14, 2013 3:06 am; edited 42 times in total
CometStrife
CometStrife
(40%)-Lv7
(40%)-Lv7

Posts : 1256
Join date : 2010-11-07
Age : 29
Currently : Earth

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by CometStrife Mon Jan 10, 2011 7:29 am

Conditional .ANI Script Commands

This section is purely for fun, because the title clearly states Simple .ANI Tutorial

Black Revival has already posted a fully explained tutorial on Conditional Commands. Please refer to it via this link
[Tutorial] Script.ani Conditions and Value Reference (Advanced)




Expanding .ANI Code Block
Every code block has a byte control and I will call them "Header".
You can find them by looking for a part start with "00 00 00" and end with "00 00"(easy way to find them is looking for comment symbo ['] before if statement like "      ヘフフ=  '下半身のみ").

Structure of them will look like this example "A2 A1 B2 B1 C2 C1",
it maybe "CD CC CC 3D 10 01" or "0A D7 23 3C BC 00" dependent by length of block code.

To add your code length, you just change number in "C" index start with "C2",example I want to add 5 chars in block and header of this example is "CD CC CC 3D 10 01",and this is result "CD CC CC 3D 15 01", if your code are "CD CC CC 3D FE 01" then "CD CC CC 3D 04 02".

Quoted from richter
If you do not understand this, refer to this tutorial.
[Tutorial] Script Indexes and More Complicated .ANI Coding




More Reading
[Tutorial] Script.ani Editing. (to be finished)
[Tutorial] Script.ani Conditions and Value Reference (Advanced)
[Guide] Texture Numbers and Script.ani Effects (Intermediate)
[Tutorial] Script Indexes and More Complicated .ANI Coding
[Tutorial] Funnel/Boomerang Throw Crashed On 2.008 Fix
[Guide] .Hod Position Data Explained
[Guide] TO THOSE WHO KNOWS WHAT THIS IS... "HERE'S A GUIDE"



End Note

Well, that is pretty much the basics of .ANI Editing. As you embark on your journey to become an excellent .ANI Modder, I wish you all the best. Persevere on and finish whatever you have started. Don't give up before you even try. ANI modding is difficult, but it is nothing compared to what humans can do. After all, the original game is also made by a human!



Credits:
CometStrife/MeteorStrife/Zeler/Zeranto I/Aesreal (For typing out everything, explaining everything)
Mocchikins/Ephemeral/Banned/Black Revival/Ethereal (For his additional attack lists, and many other stuff that are very very helpful to the World of Windom Modding. Kudos!)
Damocles (For his initial guidance that kickstarted me. I started spamming him questions about the .ANI, and cause I was hungry for more, I started experimenting on my own.)
richter (For his invaluable knowledge about the expansion of .ANI Code Blocks)
Oujar (For the many .ANIs that I downloaded, and studied. His .ANIs were the ones that allowed me to gain insights and deeper understanding of the file)
zhmwwl (For her .ANI encrypter/decrypter, for which it helped me during the first time I tried editing the .ANI files on my own. Although I hardly used it now, without her coder, I would not be where I am today)

Sites to thank for:
3DGundam (For their .ANIs that I could download and study)
Winz00e (For being such an awesome site in the past, and accepting almost everything, and of course for me to post my tutorial)


Last edited by Aesreal on Fri Oct 18, 2013 6:08 am; edited 20 times in total
CometStrife
CometStrife
(40%)-Lv7
(40%)-Lv7

Posts : 1256
Join date : 2010-11-07
Age : 29
Currently : Earth

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Mon Jan 10, 2011 3:02 pm

[url=]Starter Pack By CometStrife[/url]
...link is kind of errr....yea...
and prob stupid question: wuts up with the reserved thing i see, i notice that at 3dg too
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by CometStrife Tue Jan 11, 2011 1:48 am

i don't want to post the link yet.. when its done then i'll post it. meanwhile the reserve things are for the tutorials. like different sections that you will need, but don't want to place them together
CometStrife
CometStrife
(40%)-Lv7
(40%)-Lv7

Posts : 1256
Join date : 2010-11-07
Age : 29
Currently : Earth

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Tue Jan 11, 2011 2:25 pm

wow this is a pretty helpful tutorial, is it alright if i post this on sites like Amecha too?
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by mangak (GONE) Tue Jan 11, 2011 2:36 pm

although i disprove it...ask the one who made it.
what i do approve is: give the link to this page.
mangak (GONE)
mangak (GONE)
(100%)-Lv8
(100%)-Lv8

Posts : 3910
Join date : 2010-10-09
Currently : Freagin Heaven!!

http://www.winz00e.com

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Tue Jan 11, 2011 3:19 pm


"although i disprove it...ask the one who made it."

uhhh...yeah thats what i was doing lol....
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by CometStrife Wed Jan 12, 2011 3:22 am

winz00e is going to get the first priority. if you want, wait till i completed the entire ani tutorials first.

[Edit] BUT DEFINITELY NO 3DGUNDAM. I HATE THAT SITE (Not because i hate china people. after all my ancestors are there, and i am a chinese *thou i always fail my chinese exams...*), because of their stupid arrogant attitude...
CometStrife
CometStrife
(40%)-Lv7
(40%)-Lv7

Posts : 1256
Join date : 2010-11-07
Age : 29
Currently : Earth

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Wed Jan 12, 2011 4:34 am

CometStrife wrote:winz00e is going to get the first priority. if you want, wait till i completed the entire ani tutorials first.

[Edit] BUT DEFINITELY NO 3DGUNDAM. I HATE THAT SITE (Not because i hate china people. after all my ancestors are there, and i am a chinese *thou i always fail my chinese exams...*), because of their stupid arrogant attitude...

Yea, those guys in 3DG almost made me racist at one point.
I was even ticked off enough to make this drawing:

[Tutorial] Simple .ANI Tutorial Sopriceless

I regret making this horrible thing now...
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by CometStrife Wed Jan 12, 2011 4:46 am

OMG that.... thing.. gives me the creeps... *quickly switches off the tab*
CometStrife
CometStrife
(40%)-Lv7
(40%)-Lv7

Posts : 1256
Join date : 2010-11-07
Age : 29
Currently : Earth

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Wed Jan 12, 2011 6:49 am

awwww.....i'm hurt by that lol.....

and meh, don't find how its arrogant but its just annoying sometimes when they do passwords, i'm like: WHHHHHHHHHHHHHHHHYYYYYYYYYYYYYYYYY!!!!!???
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Wed Jan 12, 2011 7:51 am

WHAT DEH FAWKKKK MAH!!!!
Tired Reading....*huhh*
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Wed Jan 12, 2011 10:34 am

NEVER TRUST 3DG

WE NEED THE HERO!
[Tutorial] Simple .ANI Tutorial Fail1011
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Wed Jan 12, 2011 2:27 pm

eh....3dg may be strict at times but its still pretty trustworthy....
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by CometStrife Thu Jan 13, 2011 12:14 am

AzureCrow wrote:eh....3dg may be strict at times but its still pretty trustworthy....

hmm in that case i think i will post the tutorial myself then. if i find that they !@#$%?, then i'll remove it. it will be easier. you can post on amecha if you want, but rmb the credits
CometStrife
CometStrife
(40%)-Lv7
(40%)-Lv7

Posts : 1256
Join date : 2010-11-07
Age : 29
Currently : Earth

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Thu Jan 13, 2011 3:02 am

CometStrife wrote:winz00e is going to get the first priority. if you want, wait till i completed the entire ani tutorials first.

[Edit] BUT DEFINITELY NO 3DGUNDAM. I HATE THAT SITE (Not because i hate china people. after all my ancestors are there, and i am a chinese *thou i always fail my chinese exams...*), because of their stupid arrogant attitude...

Nice tutorial... im waiting forward for the rest. ehem... im half-chinese. :)
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by mangak (GONE) Thu Jan 13, 2011 5:56 am

...then ur a half sucker!

...kidding, i respect you, and i have nothing against chenese,
i just dont like 3dgundam specifically ;)

dont missunderstand.
mangak (GONE)
mangak (GONE)
(100%)-Lv8
(100%)-Lv8

Posts : 3910
Join date : 2010-10-09
Currently : Freagin Heaven!!

http://www.winz00e.com

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by CometStrife Thu Jan 13, 2011 6:00 am

lol if he is a sucker than i'm the suckers of suckers :(
CometStrife
CometStrife
(40%)-Lv7
(40%)-Lv7

Posts : 1256
Join date : 2010-11-07
Age : 29
Currently : Earth

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by mangak (GONE) Thu Jan 13, 2011 6:02 am

XD

i just said i was kidding ! LOL

ok ok, ...sheesh! no more bad jokes...that will end conflicts ^^"
(hopefully)
mangak (GONE)
mangak (GONE)
(100%)-Lv8
(100%)-Lv8

Posts : 3910
Join date : 2010-10-09
Currently : Freagin Heaven!!

http://www.winz00e.com

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by CometStrife Thu Jan 13, 2011 6:12 am

lol, i was just saying laaaaxxxxxxxx, anyway so far anyone understands my tutorial?
CometStrife
CometStrife
(40%)-Lv7
(40%)-Lv7

Posts : 1256
Join date : 2010-11-07
Age : 29
Currently : Earth

Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Thu Jan 13, 2011 8:22 am

For me [Who is an EPIC Fag] this tutorial is very simple :D
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Thu Jan 13, 2011 9:09 pm

mangakaninja wrote:...then ur a half sucker!

...kidding, i respect you, and i have nothing against chenese,
i just dont like 3dgundam specifically ;)

dont missunderstand.

Dont worry... i didnt take it seriously... and besides i hate myself too... having a chinese blood. lets end this discussion here. back to topic.

theres no GScript in mine whenever i re-pack the script. it just updates the script.
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Guest Thu Jan 13, 2011 9:41 pm

hating yourself for having chinese bloo-
ok....i'll pretend i didn't hear that.

btw i doub't every member of 3dg is that bad...

also comet, is it possible to have the funnels shoot bullets?
Anonymous
Guest
Guest


Back to top Go down

[Tutorial] Simple .ANI Tutorial Empty Re: [Tutorial] Simple .ANI Tutorial

Post by Sponsored content


Sponsored content


Back to top Go down

Page 1 of 16 1, 2, 3 ... 8 ... 16  Next

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum