|
Elric
(Administrator)
[Posts: 1549]
Logged
|

  - [December 28, 2011, 10:20:12 AM]
|
« on: December 28, 2011, 10:20:12 AM »
HOW TO MAKE A MOD by Elric42 So this tutorial is receiving even more updates. I originally intended to just cover events, but since I would like to still see more mods with completely altered story, worldmap and everything else I have decided to make this an all out HOW TO MAKE A MOD Tutorial. I will be recieving help from quite a few people's forum posts and also I will be speaking with others such as Pride, Xifanie and Raven on IRC to ensure the accuracy of what I post. In this Tutorial I intend to Cover - Event Editing
- Lots of Event editing Tricks (Like Kokojo's Decapitation & and my intro for Dante)
- Attack.out / Event Conditions Tutorial
- WorldMap 1.00 Spreadsheet
- Gameflow Editor Spreadsheet
- RAD 3 Spreadsheet
- "Your Idea's Here?"
Part 1 - Event Editing TutorialTo start Editing Events we will need the following things: EVSP <--This link Ver 1.91 FFTP <--This link Ver .480 Attack.out Editor <--This link Ver 1.02 CD Mage B5 <--This link Ver 1.02.1 Beta I made these 2 videos a while back, and my written instructions below will follow them for the most part, tho I will try to explain a bit more about camera angles. You can follow most of these steps in the videos, for any steps not in the videos, I will post pictures to go along with themStep 01: Create New folder named FFT, In this folder place your Vanilla ISO/BIN/Img, (or whatever you are using) along with your EVSP Folder, CDMage and Attack.out.[/li][/list] Step 02: Extract the FFTP Pack (Preferably into a separate folder within the first folder) Run Shishi. Step 03: Load your FFT image file into Shishi and have it restructure the image. (Idk if this is necessary, it's just something I always do) Step 04: Open CD Mage, open your FFT Image file using M2/2352 Track, you will get a warning about parsing errors, choose to proceed. Step 05: Navigate to the event folder and scroll down to TEST.EVT, Right click and extract TEST.EVT to your desktop. Do the same for the ATTACK.OUT File Step 06: (Differs from video) Open your FFT Folder and open the EVSP folder. Now move the TEST.EVT into this folder and overwrite the TEST.EVT that is present. Step 07: (PSXEvents.txt is already present in the current version of EVSP, so you will not need to decompile it as shown in the video.) Step 08: Open the EasyVent Editor Super Perfect v1.91.exe Step 09: Take a few moments to semi-familiarize yourself with the buttons and menus, as these too differ from the video, I will explain further in the next section. Step 10: Once you are ready, click the Open Event button you will see a list of event names, you will want to open EVT_002_002 Orbonne Prayer.txt Step 11: (Look at all that weird stuff O.o Don't worry, by the time I'm done with you, most of these commands should be a breeze.) Step 12: For now, go click on the Maps tab and scoll down to 101 - Tutorial (1), we will use this to pick our unit placement Step 13: Now minimize the Event Editor for a moment and open up the Attack.out folder we made earlier, now place the ATTACK.OUT file we extracted earlier into this folder. Step 14: Open up the attack.out Editor and change the map on both 001 and 002 to Tutorial (1) See picture below Step 15: Click Save and close the Attack.out GUI Step 16: Go into your FFTP Folder and Open FFTP Step 17: Once FFTP is open load your Vanilla Image file Step 18: Click the ENTD tab and go down to 100 - Beginning of the game inside orbonne Step 19: Right click on one of the blank random unit's and clone it, then paste it over all the current units except for Ramza Step 20: Change Ramza to UNIT ID 1 (the spriteset has to be a Type 1 Human sprite for this tutorial, tho it doesn't technically have to be Ramza) Step 21: Also make sure to check the Always Present box for Ramza (or whatever sprite you are using, which will be referred to as Ramza in this tutorial) Step 22: Now we set the Coordinates, Pull EasyVent back up and look at the map. We are going to use 1,5. So in FFTP set Ramza's Coordinates to X=1, Y=5 Step 23: Now set Ramza's Initial Direction to East. Once this is done, Click the PSX tab at the top of FFTP and then click Patch ISO, locate your FFT image and hit OK to apply the changes to the ENTD Step 24: Now pull EVSP back up again and delete the entire event, the only line you want to keep is Offset(x00004000) that's it. Step 25: Copy THIS and paste it after the offset in EVSP. Your EVSP should look like the picture below (forget the fact that my pic shows 1.9, I don't use 1.91, but it still works fine) Step 26: As for what these commands all do, I will cover that in Section 2Step 27: Now, click the compile event button and then Just event.txt Step 28: Once this is complete, you should go into your EVSP folder and confirm that the last modified time of the TEST.EVT reflected the current time. Confirming that the TEST.EVT was indeed updated. Step 29: At this point it's time to open CD Mage, do this using the same method as before, but this time, we want to right click on the TEST.EVT and click Import. Navigate to the TEST.EVT in the EVSP folder and import it. Once this is done, repeat the process with the ATTACK.OUT File that we edited as well. It's is important that you get both the ATTACK.OUT & TEST.EVT Files. Step 30: Hooray Last step! Now go and load up your favorite emulator and run the FFT Image that we modified. If all was done correctly once the game starts, instead of being in the Monastery you should see Ramza walking in place in the tutorial level for ~ 10 seconds and then it will move on to the next event. IF this happened then Congratulations, you now have your Blank event template for all future events! If you got different results, go back and follow all steps exactly, or PM me if you continue to have an issue. |
Ok, quite a few things to cover here, Camera commands can be a total pain in the ass, but if you take your time and use a bit of trial and error you can master them quite easily, I will list some general Rules about Camera's once I have finished the basic explanation. There are several Camera configurations you can use: {63}(rC9) Camera(+01000,+00000,+00615,+00302,+02560,+00000,+04096,+00001) Camera(+01000,+00000,+00615,+00302,+02560,+00000,+04096,+00128) {4D}(r78) Camera(+01000,+00000,+00615,+00302,+02560,+00000,+04096,+00128) WaitForInstruction(x04,x00) Camera setup A Will make the Camera spin into position at the beginning of the event, as is seem commonly in battles. |
{63}(rC9) Camera(+01000,+00000,+00615,+00302,+02560,+00000,+04096,+00001) Camera(+01000,+00000,+00615,+00302,+02560,+00000,+04096,+00001) {4D}(r78) Camera(+01000,+00000,+00615,+00302,+02560,+00000,+04096,+00128) WaitForInstruction(x04,x00) Camera setup B will make the Camera Fade In rather then spin in, which look much more proper for non-battle events. Notice the only difference between A and B is the time is changed in the second camera command. |
Camera(+00000,-00460,+00504,+00302,+03584,+00000,+04096,+00001) WaitForInstruction(x04,x00) {63}(rA9) Camera(+01144,-00460,+00504,+00302,+03584,+00000,+04096,+00256) WaitForInstruction(x04,x00) {4D}(r40)
Camera setup C is the type of setup you would use for a battle event, the reason for this is that many battle effects in the game do not take kindly to certain camera commands and you can literally have a barrel rolling camera and random crashes doing it the other way. Until we can uncover more info about the {63} and {4D} commands, it will pretty much remain this way. |
This is the explanation for Camera's in EVSP, I will explain as much of it as I can for you: Camera(+XXXXX,+ZZZZZ,+YYYYY,+ANGLE,+MAPRT,+CAMRT,+ZOOM%,+TIMER) Moves camera around the map, like a small helicopter. The coordinates used are the map's absolute coordinates, not relative ones to where the camera currently is. All entry fields can range from -32768 to 32767. Tiles are 28x28, and Camera motion is 4x more precise, so 112 = 1 Tile. 1h is 12 pixels high, so 48 = 1h, and units are 3h. If this is the Camera() Command opening your Event, it must be preceded by {63}(rC9) and followed by {4D})(r78) to function correctly, else your Event will remain as a black screen.
XXXXX = X-Coordinate +00112: 20 pixels = 1 Tile +00392: 98 pixels = 3.5 Tiles. +00896: 224 pixels = 9 Tiles.
ZZZZZ = Z-Coordinate +00048: 1h (Centers on 3h) +00192: 4h (Centers on 6h) +00384: 8h (Centers on 10h)
YYYYY = Y-Coordinate +00112: 20 pixels = 1 Tile +00392: 98 pixels = 3.5 Tiles. +00896: 224 pixels = 9 Tiles.
ANGLE = Camera Angle +00000: +00.00 Degrees. +00302: +26.54 Degrees. +00341: +30.33 Degrees. +01024: +90.00 Degrees.
MAPRT = Map Rotation -03584: -315.00 Degrees. -02560: -225.00 Degrees. -01536: -135.00 Degrees. -00512: -045.00 Degrees. +00000: +000.00 Degrees. +00512: +045.00 Degrees. +01536: +135.00 Degrees. +02560: +225.00 Degrees. +03584: +315.00 Degrees. (It is recommended that you never do rotations above 180 degrees in either direction.)
CAMRT = Camera Rotation
-02048: -180.00 Degrees. -01024: -090.00 Degrees. -00512: -045.00 Degrees. +00000: +000.00 Degrees. +00512: +045.00 Degrees. +01024: +090.00 Degrees. +02048: +180.00 Degrees.
ZOOM% = Camera Zoom Percentage
+02048: 050% +04096: 100% +08192: 200%
TIMER = Time required to fulfill instruction.
+00050: 0.50 Seconds. +00100: 1.00 Seconds. +00300: 3.00 Seconds. |
Lets look at the camera setup from our Blank Template event, {63}(rC9) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00001) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00128) {4D}(r78) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00128)You can see here that based on the info I've provided above as well as what is explained in EVSP: -We have the MAPRT set to 315.00 Degrees, this will go from the original position of the map, so try to when in doubt you can always zero this out and do some trial and error. |
Now that you can see the general idea of a camera, lets talk about some rules RULES OF CAMERA CONTROL:Like I said, Camera's are a pain, but just try to follow the 3 Rules listed above and use the rest of the info to guide you and you should be just fine. |
UnitAnim(xID,xAl,xSQ,xEV,x00)You will likely use this A LOT in events. UnitAnim(xID,xAl,xSQ,xEV,x00) Calls a certain animation, and applies it to specified Unit(s). ID = Unit ID Target Unit's ID in ENTD. Al = Affect All x01: affects all units instead of just Unit ID. SQ = SEQ ID Loads corresponding animation from unit's SEQ file. EV = EVTCHR Frame x00: Uses SEQ Frames. x01: Uses EVTCHR Block 1 Frames. x02: Uses EVTCHR Block 2 Frames. SEQ Frame List: (Video of SEQ frames by Elric42 here: http://www.youtube.com/watch?v=nuy1yEL_Nhk) |
Now these are used for both Normal and EVTCHR frames, but I will be explaining EVTCHR much later in the guide, so For now we will just focus on the normal UnitAnim frames, which are listed in EVSP in the UnitAnim section. SEQ are the frames or animations that you would like to use for the character. You will notice that I made a video showing all these animations in the EVSP explanation or it can also be viewed here: For right now, we are going to make Ramza stand still, so for that we will use SEQ 02 after which we end up with: UnitAnim(x01,x00,x02,xEV,x00) |
We are going to place this before the camera command so that by the time we see Ramza he will already be standing still. So at this point our event should look like: Offset(x00004000)
UnitAnim(x01,x00,x02,x00,x00)
{63}(rC9) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00001) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00128) {4D}(r78) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00128)
Wait(01000) EventEnd()
//INSTRUCTION SECTION END - TEXT START //Message x01 {font:08}XXX{br} {font:00}XXX{end} |
|
|
Focus is another fairly easy command. You will most likely use this for Battle Dialogue, or if you are just to lazy to make a proper camera command. This is how you will see a focus command used. {63}(rAA) Focus(x01,x00,x01,x00,x00) Camera(+00001,+01253,+04352,+00302,+00512,+00000,+04096,+00032) WaitForInstruction(x04,x00) Now look below at my camera command after the focus command. It looks a bit.. off doesn't it? Well if you look at vanilla events that have battle dialogue you will see most are like this. This example is from Bariaus Hill and other maps won't always work with the same camera setup when using focus. For best results, look at battle dialogue events or focus commands in victory events. |
This is another one you are likely to use a lot for Dialogue in events. I will also explain several other commands that go with this as well. DisplayMessage(x10,xDT,xMSG#,xID,x00,xPR,+XXXXX,+YYYYY,+ARPOS,xOT)Now, looking at this, it looks like a lot more then what it really is: To start we are going to assume you want to use this dialogue box to make Ramza talk. Anytime the box is coming from a person standing in one place (I will explain dialogue for moving Unit's and none unit specific Dialogue Boxes in Section 3) I put zero's in the X,Y and ARPOS, this is because when using a dialogue box that has a unit ID in it, it will automatically center over/under the character speaking.
So what we have now is:
DisplayMessage(x10,xDT,xMSG#,xID,x00,xPR,+00000,+00000,+00000,xOT) |
These are the Dialogue Type's from EVSP: DT = Dialogue Type. x01: Top of Screen x02: Bottom of Screen x04: Thinking x08: No Arrow x10: Dialogue Box x20: Named Box ("Check" if x10=False, "Help" if True.) x40: Independent Message Box x80: Close with Instruction One thing you need to keep in mind is that you add these together to get your result for the DT section of the DisplayMessage command. So now we will just say we used 11, what we end up with so far is: DisplayMessage(x10, x11,xMSG#,xID,x00,xPR,+00000,+00000,+00000,xOT) |
This one is easy, this is the number the matches the dialogue number at the bottom of the event. Keep in mind, that these must do in order are they are in hex meaning 0-9 A-F 10-19 1A-1F etc.
Since this is our first message for the event we would use 0001, which brings us to:
DisplayMessage(x10,x11,x0001,xID,x00,xPR,+00000,+00000,+00000,xOT) |
Another simple one, this is the Unit ID who you want to display the message over, remember we switched Ramza to 01
in the first section, so that is what we will use here. Now we have:
DisplayMessage(x10,x11,x0001,x01,x00,xPR,+00000,+00000,+00000,xOT)
|
I will explain this one in another section, you can read the explanation in EVSP if you like. Something like this will be used in more advanced situations, such as for EVTCHR Portriats and things like that. This will be included in Section 3.
For now, we are going to make it 00. Now we have:
DisplayMessage(x10,x11,x0001,x01,x00,x00,+00000,+00000,+00000,xOT) |
The last part is OT which is your Dialogue Box Opening Type. I normally always set this to 03, but I didn't notice a big different between different numbers I've seen used in vanilla.
So this would finish up the command at:
DisplayMessage(x10,x11,x0001,x01,x00,x00,+00000,+00000,+00000,x03) |
Now, you would be done if you wanted the dialogue to play along with the event, but this is not normally the case, so in most circumstances we will need a WaitForInstruction command to go after the dialogue command. If we look at E5 WaitForInstruction in EVSP we see that x01 is used for ShowDialog. So in the end, what we have is. DisplayMessage(x10,x11,x0001,x01,x00,x00,+00000,+00000,+00000,x03) WaitForInstruction(x01,x00)Now the command portion of this section is finished. Note that these instructions will remain the same for using a xDT of x12, x15 and x16. x91 and x92 are used a bit differently and will be explained after the dialogue portion. Now look near the bottom of the event, you will see the: //INSTRUCTION SECTION END - TEXT START
Everything after this will be will you will setup your actual dialogue, for example: //Message x01 {font:08}{Ramza}{br} {font:00} Random dialogue here!{br} {br} More Random{br} Dialogue!{end} Anytime you want Ramza to speak always make sure to put in {Ramza} for the name, if you forget those {} then the name won't change to whatever you set it to at the beginning of the game. Font:08 tells the game that this font is to appear red, this is hw you make a name in FFT. Font:00 tells the game that this font is to appear white, this is how you make normal Dialogue. You get 3 lines per page, and the name counts on the first page, so you only really get 2 on that one always make sure that your lines break with {br} and that the last line on a page is a bit shorter then the lines before it. Otherwise the turn page icon will appear over your text in the event. In the above example I set it up to show Ramza speaking one line, then going to the next page where he speaks 2 more then it ends. Also make sure to put {end} at the end of your dialogue otherwise the next dialogue will become a part of it, cause very undesired results. So now our event should look like: |
ChangeDialog(xDD,xMSG#,xPR,x00)Using x91 and x92: Now that we have all the basic dialogue stuff down we can move to something else we will see alot in Vanilla. Take this for example: DisplayMessage(x10,x91,x0001,x01,x00,x00,+00000,+00000,+00000,x03) WaitForInstruction(x01,x00) ChangeDialog(x01,xFFFF,x00,x00) WaitForInstruction(x01,x00) Now you will see some familiar commands here, in fact the only new one is ChangeDialog. Now with ChangeDialog we can do several things, most commonly this would be used for displaying a second message, making it possible to put another command in between the 2 separate sets of dialogue for the same character without actually removeing the box. Say you wanted a character to stop and turn to another unit during a conversation without the bubble closing, that is one use that I will explain in Section 3. As for right now I'm just going to explain this basic setup. xDD in this will either be x01 or x02. x01 will be used if the message type on the DisplayMessage was x91, x02 will be used if it was x92. this is why it only works with these 2 numbers since ChangeDialog doesn't go higher then x02 in the xDD section. In an instance such as the one shown above where we used either x91 or x92, the Dialogue will not close until it is followed up by a ChangeDialog command with the xFFFF in the xMSG# section the xPR in this is something I will explain in section 3 just as with the xPR in DisplayMessage So the end result will be quite similar to the other display setup, which will look like: |
|
WalkTo(xID,x00,XXX,YYY,xEL,x00,+SPD,x01) WaitWalk(xID,x00)These are another 2 very commonly used commands. In most normal circumstances, this is how you will move your character around the map during an event. So now, lets take a look: A short Explanation on WaitWalk. Now onto Walkto This would be the X and Y that you want to walk to on the map Now we currently have Ramza standing still at 1,5, so lets have him walk around a bit shall we? This map below marks the path we will make Ramza walk: So you can see that we will go to 1,7 then 5,7 then 5,3 then 1,3 and finally back to 1,5 again. I included a wait command to make sure the camera has enough time to start up before the walking takes place, For more info on Wait Commands, look further down in Section 2. So what we have now, including the Wait & Waitwalk commands will look like: Wait(00200) WalkTo(x01,x00,001,007,xEL,x00,+SPD,x01) WaitWalk(x01,x00) WalkTo(x01,x00,005,007,xEL,x00,+SPD,x01) WaitWalk(x01,x00) WalkTo(x01,x00,005,003,xEL,x00,+SPD,x01) WaitWalk(x01,x00) WalkTo(x01,x00,001,003,xEL,x00,+SPD,x01) WaitWalk(x01,x00) WalkTo(x01,x00,001,005,xEL,x00,+SPD,x01) WaitWalk(x01,x00) Now since we are done walking after this we are going to add another UnitAnim to make Ramza stop walking, remember how we did that earlier? Go grab the UnitAnim(x01,x00,x02,x00,x00) that we made earlier and place it after the last Walkto command. And he will stop once the walking cycle has finished. |
xEL is your Elevation. Now YOU DO NOT have to increase this when going to higher platforms unless it is panel that you can be above or below. An example would be the bridge in the Zirekile Falls map. You can be on the bridge or below the bridge. For this since they would be the same panel number, you would have to use x01 in the xEL place to mark that you wanted to use the higher elevation panel rather then the one below. As shown in the below picture: |
So now that all this is in place we should have an event that now looks like: Offset(x00004000)
UnitAnim(x01,x00,x02,x00,x00)
{63}(rC9) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00001) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00128) {4D}(r78) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00128)
Wait(00200)
WalkTo(x01,x00,001,007,x00,x00,+028,x01) WaitWalk(x01,x00)
WalkTo(x01,x00,005,007,x00,x00,+028,x01) WaitWalk(x01,x00)
WalkTo(x01,x00,005,003,x00,x00,+028,x01) WaitWalk(x01,x00)
WalkTo(x01,x00,001,003,x00,x00,+028,x01) WaitWalk(x01,x00)
WalkTo(x01,x00,001,005,x00,x00,+028,x01) WaitWalk(x01,x00)
UnitAnim(x01,x00,x02,x00,x00)
DisplayMessage(x10,x11,x0001,x01,x00,x00,+00000,+00000,+00000,x03) WaitForInstruction(x01,x00)
Wait(01000) EventEnd()
//INSTRUCTION SECTION END - TEXT START
//Message x01 {font:08}{Ramza}{br} {font:00} Random dialogue here!{br} {br} More Random{br} Dialogue!{end} |
|
The rest of Section 2 is all very easy, so go ahead and pat yourself on the back for making it this far. Now Lets look at the next one RotateUnit(xID,xNE,xDR,xCL,xRS,TIM) WaitRotateUnit(xID,x00)RotateUnit(xID,xNE,xDR,xCL,xRS,TIM)
Rotates target unit in specified direction.
ID = Unit ID Target Unit's ID in ENTD. x00 Affects all units.
NE = No Enemies x00: Affect Enemies. x01: Do Not Affect Enemies.
DR = Direction Rotated To (Using the Battle-Standing Frame, UnitAnim() 06, 07, 08.) x00: South East x01: South x02: South x03: South West x04: South West x05: West x06: West x07: North West x08: North West x09: North x0A: North x0B: North East x0C: North East x0D: East x0E: East x0F: South East
(Using proper Standing Frame, UnitAnim() 01, 02.) x00: South x01: Southwest x02: Southwest x03: West x04: West x05: Northwest x06: Northwest x07: North x08: North x09: Northeast x0A: Northeast x0B: East x0C: East x0D: Southeast x0E: Southeast x0F: South
CL = Clockwise or Counter Clockwise x00: Automatic (shortest way) x01: Clockwise x02: Counter-clockwise
RS = Rotation Speed per 45 Degrees x00: 3/8 seconds x01: 1/4 seconds x02: 1/16 seconds x03: 1/16 seconds x04: 1/16 seconds x05: 1/4 seconds x06: 1/8 seconds x07: 1/16 seconds x08: 3/4 seconds x09: 5 seconds x0A: 1 second x0B: 1/2 seconds x0C: 5/4 seconds
TIM = Time before next Unit Rotates. 000: Instant. 255: 1 Second. |
Now, do you remember how we did the walk command? If you look at how we did and and think about how walking works. In the end of it Ramza would be facing north, so our objective here will be to make him look East again once he is done walking. So let's break this down: Now this one has caused some confusion will people. There are 2 different standing Poses in FFT, both are done by UnitAnim. 02 and 07 02 is used for events, as you already know by the UnitAnim we setup earlier. 07 is only used for in battle dialogue, think when Miluda speaks and the units stop to turn and look at her. Now when using RotateUnit, you need to know which standing Pose the Unit is currently using. If you are using 02, then you will follow this: If you are using 07, then you will follow this: So given that info, we now have: RotateUnit(x01,x00,x0B,xCL,xRS,TIM) |
Last part for this command, I have never touched this personally, it supposedly effects the time before another unit can Rotate, but i use other methods for this, you however may find it useful. But for now since Ramza is the only character, we will leave it at 000. Which completes the RotateUnit Command at:
RotateUnit(x01,x00,x0B,x00,x00,000)
|
Now we will place our completed commands after the second UnitAnim in the event. Which should look like this: Offset(x00004000)
UnitAnim(x01,x00,x02,x00,x00)
{63}(rC9) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00001) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00128) {4D}(r78) Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00128)
Wait(00200)
WalkTo(x01,x00,001,007,x00,x00,+028,x01) WaitWalk(x01,x00)
WalkTo(x01,x00,005,007,x00,x00,+028,x01) WaitWalk(x01,x00)
WalkTo(x01,x00,005,003,x00,x00,+028,x01) WaitWalk(x01,x00)
WalkTo(x01,x00,001,003,x00,x00,+028,x01) WaitWalk(x01,x00)
WalkTo(x01,x00,001,005,x00,x00,+028,x01) WaitWalk(x01,x00)
UnitAnim(x01,x00,x02,x00,x00)
RotateUnit(x01,x00,x0B,x00,x00,000) WaitRotateUnit(x01,x00)
DisplayMessage(x10,x11,x0001,x01,x00,x00,+00000,+00000,+00000,x03) WaitForInstruction(x01,x00)
Wait(01000) EventEnd()
//INSTRUCTION SECTION END - TEXT START
//Message x01 {font:08}{Ramza}{br} {font:00} Random dialogue here!{br} {br} More Random{br} Dialogue!{end} |
|
______________________________________ | Part 2 - Attack.out / Event Conditions TutorialPart 3 - WorldMap 1.00 Spreadsheet TutorialEXTRASHow To Use ChangeMap in EventsThis ChangeMap tutorial is going to be part of a bigger tutorial that I still have yet to finish, but with EVSP 1.8 coming out soon as well as hearing multiple questions regarding this. I decided to make a video demonstration and a short tutorial right now for anyone who wants to try this out. First off since this is for a later part of my Tutorial, it is written assuming you already know the basics of an event, which quite honestly with the detail I'm going to go into here, you shouldn't need much more then my 2 Event editing preparation videos available on my Youtube Channel. I will also be providing MY event.txt for this event at the end of this post. So I will give examples of my Attack.out GUI setup as well as my ENTD for this event. http://www.youtube.com/watch?v=9c962QZnMQcStep 1: Attack.out GUI (Anything Blacked out is irrelevant)Attack.out Example-Go into the Attack.out GUI and setup it up as is the above picture. We are making the Map for this event be Tutorial (1) after this is done save and exit the GUI. Note: At this point you could import your new Attack.out back into the image file via CDMage but I prefer to do these all at once. | Step 2: ENTDFFTPatcher Example-As with Step 1, if you are following this tutorial, follow the above picture to setup your ENTD in FFTPatcher, (Ignore all the little black marks, I forgot to change back to a vanilla Rescources.zip before taking the picture and I'm to lazy to do it now) -Make sure you put Ramza's placement in ENTD 100 to x=3 y=4 with a Unit ID of 1 -It's also most important to make sure Ramza has neither Always Present nor Randomly Present checked since that is what makes this all work correctly, atleast in this tutorial. -Once this is all finished make sure you patch you FFT iso with the changes and close out of FFTPatcher | Step 3: The Event (The Long Step)-This is covered over 7 Pictures detailing the entire event. So I strongly suggest that you download the event.txt at the button on this post so that you can follow along. -There are many things that repeat in this tutorial, so I will be selecting pieces with certain colors and I will list the the command functions for each color below, some pictures will have the same colors since as I said there is a lot of repeating in this tutorial. -For most of the commands here (all the known ones anyway) can be found in EasyVent, so i suggest looking at them there if you have any questions regarding them, since I will mostly only be explaining why I'm using which commands in this event ChangeMap Event Breakdown:Colors:RED:{49}() AddUnitPrep, This is needed for AddUnit Start() and AddUnitEnd() to work they way we want them to in this event.
UnitPresent(x01,x00,x01) This says that once AddUnitStart() is triggered, Unit 01 is loaded to memory, and the second 01 says that he is not yet drawn to the map.
AddUnitStart() Wait(00030) AddUnitEnd() These 3 commands are used along with the UnitPresent to call Ramza to the memory since we did not have him as Present in the ENTD
Wait(00010) I put alot of small Waits like this in my events, I do this because certain things need to be separated from others to be functional or to look correct
Draw(x01,x00) This pulls Ramza into the event at x,y we selected in the ENTD
UnitAnim(x01,x00,x02,x00,x00) This is used to make 1 (Unit 1) stand still (SEQ 2) rather then walk in place
| GREEN:{63}(rC9) Camera(+00560,-00048,+00560,+00302,-03584,+00000,+04096,+00001) Camera(+00560,-00048,+00560,+00302,-03584,+00000,+04096,+00128) {4D}(r78) Camera(+00560,-00048,+00560,+00302,-03584,+00000,+04096,+00128)This is the Camera setup that has been choosen for the first map (tutorial 1) Being the first map of the Event we need to have it setup as we do here, I'm not exactly certain of what the {63}(rC9) and {4D}(r78) do exactly, but they seem necessary for a camera to function correctly at the beginning of the event. For more info on this take a look at Kokojo's Event editing tutorial Here**I'm not going to go to far into Camera explainations in this section, since with EasyVent, Vanilla Events and the ones in this Tutorial to use as an example, it's really not that complicated since you have the Camera Generator in EasyVent at your disposal WaitForInstruction(x04,x00)This ways that the event will not proceed until all camera movement has completed. | BLUE:DARK RED/MAROON:ChangeMap(013,x00) This is used to switch maps the number can be found in EasyVent or on the main page of FFH
Camera(+00660,-00250,+00048,+00341,+00256,+00000,+04096,+00128) WaitForInstruction(x04,x00) Another Camera Angle and camera wait, each map will have it's own, which i pulled directly from vanilla events or setup myself for mine events
{49}() AddUnitPrep, This is needed for AddUnit Start() and AddUnitEnd() to work they way we want them to in this event.
UnitPresent(x01,x00,x01) This says that once AddUnitStart() is triggered, Unit 01 is loaded to memory, and the second 01 says that he is not yet drawn to the map.
AddUnitStart() Wait(00030) AddUnitEnd() These 3 commands are used along with the UnitPresent to call Ramza to the memory since we did not have him as Present in the ENTD.
WarpUnit(x01,x00,003,006,x00,x00) This is used to move Ramza to a different location since he is now loaded again, but is still not visible.
Wait(00025) Wait .25 second
TeleportIn(x01,x00) Sound(x006B) Wait(00025) UnitAnim(x01,x00,x74,x00,x00) Draw(x01,x00) These 5 commands are used to show the Teleport Animation, make the teleport In Sound, make Ramza have his hands raised as he would when teleporting, and then Draw to bring him in. This is not the most ideal setup for Teleport In i'm sure but I've never successfull gotten it working any other way
Wait(00030) UnitAnim(x01,x00,x02,x00,x00) Wait .30 second, then Ramza Stands still | YELLOW: (added the line above the yellow box as well since it differs from the others)UnitAnim(x01,x00,x1C,x00,x00) Ramza use's SEQ 1C, Level-up (loop)
DisplayMessage(x10,x12,x0001,x01,x00,x00,+00000,+00000,+00000,x03) WaitForInstruction(x01,x00) Ramza, speaks message one, and it is displayed below him
UnitAnim(x01,x00,x02,x00,x00) Ramza use's SEQ 02, Standing Pose | PINK: |
|
After all this is done, you can save everything to your event.txt and run it thru the compiler, after which you will need to import your TEST.EVT and ATTACK.OUT (if you haven't already) back into the event folder of your FFT ISO. Done! So basically that's everything, review the 7 pictures check the event.txt I've included and read the Commands explained in the colored boxes and it should all be pretty simple. |
« Last Edit: April 23, 2012, 02:46:40 AM by Elric42 »
|
|
|