Final Fantasy Hacktics

Modding => Event Editing => Topic started by: Elric on December 28, 2011, 05:20:12 am

Title: How to make a Story Mod (WIP Tutorial)
Post by: Elric on December 28, 2011, 05:20:12 am
HOW TO MAKE EVENTS

    Xifanie has recently gone through and documented every bit of info we could hope
    to have on events. Being as such I figured it was time to update this Tutorial.

    Some things will remain as they were with some updates. And I will be removing several
    of the sections and linking straight to the Wiki, which is already organized better than I
    could do here.

    You can find all the most up to date EVENT INSTRUCTIONS HERE (http://ffhacktics.com/wiki/Event_Instructions)
    You can find the most up to date CONFIG.INI HERE (http://xifanie.ffhacktics.com/CONFIG.INI)


    The older portions of this tutorial will receive another update very soon to use the updates that Xifanie
    made to the config.ini
    These updates are still coming, I PROMISE :P

    To start Editing Events we will need the following things:

    EVSP (http://ffhacktics.com/smf/index.php?topic=11675.0)                 <--This link
    FFTP (http://ffhacktics.com/smf/index.php?action=dlattach;topic=8301.0;attach=10324)                 <--This link Ver .480
    Attack.out Editor (http://ffhacktics.com/downloads/ATTACK.OUT%20Editor.rar) <--This link Ver 1.02
    CD Mage B5 (http://www.download3k.com/DownloadLink1-CD-Mage.html)       <--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 them
    UPDATE!
    Some people are having issues where their events are not being imported even though the timestamp does update on the TEST.EVT
    if you have this error using the Compile function in EVSP, then simply copy/pate your entire event from EVSP into a notepad and name it
    event.txt, once you do this (you will likely have to remove the event.txt that is in the folder by default) run the Event_Compiler program.
    Once the timestamp updates, reimport your TEST.EVT and it should fix your issue.

    Step 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
    (http://i39.tinypic.com/34rufrs.png)
    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 (http://pastebin.com/rsLGqtaQ) 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)
    (http://i43.tinypic.com/2ihpfe0.jpg)
    Step 26: As for what these commands all do, I will cover that in Section 2

    Step 27: Now, Alt+A to select everything in EVSP. Copy and Paste the event into a notepad document called event.txt (this needs to be in the same
    folder as the compiler.) Double click the Event_Compiler_2.01b.exe

    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 moved the camera ~ 4-5 panels in the X and Y axis,

    -We have moved the Z axis up 1 (remember for Z + is down and - is up)
    -The ANGLE is set to 26.54 Degrees (this is the same as when you normally enter
    a battle, if you were to press the R2 button and bring that map angle up then
    you would be switching to 30.33 Degrees, always try to think of it this way, it
    will help you)
    -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.

    (http://i42.tinypic.com/xlgdif.png)
    (http://i42.tinypic.com/orldhw.png)
    (http://i40.tinypic.com/2igdr1v.png)
    (http://i40.tinypic.com/118lh10.png)
    -Our CAMRT is set to zero, just pretend this doesn't exist, I cannot think of
    any instance in which it would be useful unless you wanted to make someone dizzy
    and disoriented. Avoid at all fucking costs.
    -Our ZOOM is set to 100%, this will always look the best in most circumstances,
    tho it can be push a bit more or less, but you risk some funny look sprites.
    -And our TIMER is set to 00001, 00128 and 00128, being the only difference
    between the 3 camera commands, remember the explanation from earlier and decide weither you
    want your camera to spin in, or fade in.

    Now that you can see the general idea of a camera, lets talk about some rules

    RULES OF CAMERA CONTROL:

    You only have 4 basic camera angles, imagine being in a battle in FFT, now hit
    the R1 button 4 times. What happens? You go thru 3 different angles then back to
    the original. Those numbers below represent those 4 angles for any given map.

    +00512: +045.00 Degrees.
    +01536: +135.00 Degrees.
    +02560: +225.00 Degrees.
    +03584: +315.00 Degrees.

    If you try to stray to far in between 2 of these numbers such as something like
    +01028 you will have very ugly results, it's always best to stick as close to
    these base numbers as possible to avoid any graphic ugliness. It may be hard 
    when trying to find that "perfect" camera angle, but sometimes it's more
    productive to just change the event a bit to accommodate the camera. Love the
    Camera and it will love you back.
    There is a reason that the ZOOM in vanilla is set to 100% in nearly every camera
    instance, because it's not suppose to change, once you have a better
    understanding of events and want to experiment a bit you may find use to change
    this. But in most instances it's better to leave well enough alone.
    Of all the things I've learned in events, Camera commands are the hardest to
    master, I've managed to pull off some rather unique camera work in certain
    events, but others just get junked over and over. I have spent more then 3-4
    hours alone just working on camera angles in events. Keep this in mind when you
    are ready to RageQuit.
    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.

    You should know what this is by now. This would be x01 for Ramza (or whatever unit you would like to perform the animation.)
    Another easy one.
    x00 means that it will only effect the unit ID that was input in the xID section.
    x01 means it will effect everyone on the team of the used Unit ID.
    (Alternatively you could put 00 for the unit ID and make it effect everyone on the field by using a command such as UnitAnim(x00,x00,xSQ,x00,x00)

    So since we only want to effect Ramza right now we end up with:

    UnitAnim(x01,x00,xSQ,xEV,x00)
    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)
    Since I won't be explaining EVTCHR until later on, we will go ahead and turn the xEV into x00. So we now have:

    UnitAnim(x01,x00,x02,x00,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:

    (http://i41.tinypic.com/2lcbvcl.png)
    http://pastebin.com/QrJ5AY0u (http://pastebin.com/QrJ5AY0u)
    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.

    Focus(xID,x00,xID,x00,x00)

    Focuses the camera on the target unit.

    ID = Unit ID.
    Target Unit's ID in ENTD.

    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.

    11 - Above speaking Unit                                 10+1
    12 - Below speaking Unit                                 10+2
    15 - Thinking bubbles above Unit                      10+1+4
    16 - Thinking bubbles below unit                       10+2+4
    91 - Above speaking Unit, Close with instruction  10+1+4+80
    92 - Below speaking Unit, Close with instruction   10+2+4+80

    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:

    (http://i43.tinypic.com/152i5ab.png)
    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:

    (http://i42.tinypic.com/1gi3ao.png)
    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:

    WalkTo(xID,x00,XXX,YYY,xEL,x00,+SPD,x01)

    Walks unit to a chosen square, path taken affected by unit's Jump score.

    ID = Unit ID.
    Target Unit's ID in ENTD.

    XXX = X-Coordinate
    Target Panel's X-value.

    YYY = Y-Coordinate
    Target Panel's Y-value.

    EL = Elevation
    x00: Lower Elevation Tile
    x01: Higher Elevation Tile

    SPD = Speed
    +008: Walk
    +032: Run

    A short Explanation on WaitWalk.

    This one is very self explanatory, but in case I need to explain;
    WaitWalk(xID,x00) is what we have, Anytime you want to walk you will likely
    use a WaitWalk afterward, the xID would be the same ID as the unit that is walking.
    This makes it so that the next action will not take place until this unit is done
    walking (unless done in a block, which will be explained later).

    Now onto Walkto

    You should know by now that this will obviously be x01
    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:

    (http://i41.tinypic.com/291cb2f.png)

    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:
    (http://i43.tinypic.com/htwqx2.png)
    Another rather simple one. This controls the speed at which you walk +028 being the normal vanilla
    walking speed for events. You can play around with this a bit to see different results. Not much you can mess up here.

    So now that all this is in place we should have an event that now looks like:

    (http://i44.tinypic.com/p4qir.png)
    http://pastebin.com/Au5v0ykt (//http://)
    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:

    If I still have to explain this, then I have failed in this tutorial. This will be x01
    As you can see by the EVSP explanation, chooses weither or not enemy teams are effected,
    keep in mind that in order for the 00 to take effect and make it effect enemies and units alike,
    you will have to put 00 in the ID portion rather then a actual unit ID
    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:
    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

    If you are using 07, then you will follow this:
    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

    So given that info, we now have:

    RotateUnit(x01,x00,x0B,xCL,xRS,TIM)
    All this does is choose if you want to make the char turn Clockwise or Counter Clockwise,
    I always leave it at 00 since that just chooses the fastest direction

    Now we are at:

    RotateUnit(x01,x00,x0B,x00,xRS,TIM)
    Another simple one. How fast do you want to turn? This is another one that I generally leave at 00, since it seems to be the smoothest movement.

    Now:

    RotateUnit(x01,x00,x0B,x00,x00,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)
    WaitRotateUnit(xID,x00)
    Very easy, if you remember the WaitWalk command from above, this functions the exact same way, meaning the
    event won't proceed past it until after the Unit Rotation is complete

    Now we will place our completed commands after the second UnitAnim in the event. Which should look like this:

    (http://i40.tinypic.com/4qkizt.png)
    (http://pastebin.com/4SSyTGZ4[/url)
    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}
    Block Command looks like:

    BlockStart()

    BlockEnd()

    Anything you put in a block will happen at the same time as what is after
    it. Used for making units walk and do other things at the same time.
    See Wiki for limitations on which commands can be used in blocks.





    ADD UNITS INTO EVENT AFTER TELEPORT OUT, OR IF NOT SET TO ALWAYS PRESENT
    IN ENTD

    AddUnitStart()
    AddUnit(x01,x00,x01)
    AddUnit(x0D,x00,x01)
    AddUnit(x0F,x00,x01)
    AddUnitEnd()
    WaitAddUnitEnd()




    WARPUNIT TO SPECIFIC COORDINATES 00,01,02,03 = S,W,N,E
    (x0D, x01, x0F are Unit IDs)

    WarpUnit(x0D,x00,002,000,x00,x02)
    WarpUnit(x01,x00,003,000,x00,x02)
    WarpUnit(x0F,x00,004,000,x00,x02)





    WAIT COMMAND

    Wait(00010)




    WALK IN FROM SOUTHERN EDGE OF MAP. UNIT MUST BE ERASED OR NOT PRESENT (WITH ADDUNIT)
    BEFORE THIS COMMAND SET. REMOVE BLOCK (START & END) IF YOU DO NOT WANT COMMANDS
    FOLLOWING THIS TO HAPPEN AT THE SAME TIME AS THIS

    BlockStart()
    SpriteMove(x01,x00,+00000,+00000,-00014,x00,x01,+00000)
    ColorUnit(x01,x00,x01,-006,-004,-002,000)
    Wait(00002)
    Draw(x01,x00)
    ColorUnit(x01,x00,x08,+000,+000,+000,004)
    SpriteMove(x01,x00,+00000,+00000,+00000,x00,x01,+00018)
    WaitSpriteMove(x01,x00)
    WalkTo(x01,x00,001,005,x00,x00,+008,x01)
    WaitWalk(x01,x00)
    UnitAnim(x01,x00,x0002,x00)
    RotateUnit(x01,x00,x00,x00,x00,x00)
    WaitRotateUnit(x01,x00)
    BlockEnd()




    CAMERA SETUP FOR FADE IN

    {63}(rC9)
    Camera(+00225,-00048,+00600,+00302,-00512,+00000,+04096,+00001)
    Camera(+00225,-00048,+00600,+00302,-00512,+00000,+04096,+00001)
    Reveal(120)
    Camera(+00225,-00048,+00600,+00302,-00512,+00000,+04096,+00128)
    WaitForInstruction(x04,x00)




    SPRITEMOVE 1 PANEL SOUTH INSTANTLY (USED FOR WALKING IN OFF MAP)

    SpriteMove(x01,x00,-00000,+00000,-00028,x00,x01,+00000)




    DRAW/ERASE COMMANDS

    Draw(x01,x00)
    Erase(x01,x00)




    WALKTO COMMAND SET

    WalkTo(x01,x00,006,000,x00,x00,+008,x01)
    WaitWalk(x01,x00)




    ROTATE COMMAND SET

    RotateUnit(x01,x00,x08,x00,x00,000)
    WaitRotateUnit(x01,x00)




    ANIMATION

    UnitAnim(x01,x00,x0002,x00)




    FACEUNIT COMMAND

    FaceUnit(x01,x00,x00,x01,x00,x00,x00)




    DISPLAY MESSAGE BELOW CHARACTER (CHANGE x12 TO x11 TO BE ABOVE CHARACTER)
    (x01 is Unit ID)

    DisplayMessage(x10,x12,x0001,x01,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)




    DISPLAY MESSAGE WITH CHANGE DIALOGUE, USED TO ALLOW YOU DO MAKE A
    CHARACTER TURN OR ROTATE WITHOUT CLOSING THE DIALOGUE BOX, OR OTHER
    USES.

    DisplayMessage(x10,x92,x0001,x01,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    ChangeDialog(x02,x0002,x00,x00)
    WaitForInstruction(x01,x00)
    ChangeDialog(x02,xFFFF,x00,x00)
    WaitForInstruction(x01,x00)




    Other commands and or command sets can be requests to be listed here.

    We used to have a command called BlackoutBeta, this was thought to just be a way to blacken the screen.
    However, this command actually allows you to darken the screen and select a new map, this also resets the
    event and allows you to essentially start the event over on another map. You could technically link several
    events together in 1 slot this way, but you can still only have 2 music tracks per event.

    Before the newest Config.ini the Command would look like this:
    BlackoutBeta(x00,x00)

    In the newest Config.ini the Command would look like this:
    ChangeMap(MAP (http://ffhacktics.com/wiki/Event_Instruction_4C),x00)

    (Click MAP to see a map listing)

    After using this command, you need another {4D} Reveal (http://ffhacktics.com/wiki/Event_Instruction_4D) command and a Camera command the way you
    would at the start of a normal event.



    HOW TO EDIT WORLDMAP FLOW
    *Written by Raven, Translated to dummy-speak by Elric*

    You can find WORLDMAP 1.00 HERE (http://ffhacktics.com/smf/index.php?action=dlattach;topic=7271.0;attach=13275) inside of the Game Progression Workbook Compilation
    inside of Ravens Workbooks.rar

    NOTE: All World Map Commands are HALF-WORDS in LITTLE ENDIAN.

    SPOILER LEGEND: COMMAND ID (WHAT YOU'LL FIND IT AFTER)


    VARI = Variable ID.  List can be found on the Wiki.
    VALU = Value contained in VARI.

    0100 VARI VALU //IF VARI EQUAL TO VALU, EXECUTE
    0200 VARI VALU //IF VARI GREATER THAN VALU, EXECUTE
    0300 VARI VALU //IF VARI LESS THAN VALU, EXECUTE

    Runs checks on certain in-game variables to see whether the code can be executed.
    Some of the most important commands as they determine when specific events trigger
    on locations where more than one thing occurs, which is most of them.


    SPID = Sprite ID

    0400 SPID // Checks for SPID, EXECUTE.

    Checks if a character with the appropriate SPRITE ID is in the player's party to
    execute the event. This is how Vanilla checks for things like your party containing
    Beowulf, Reis, and/or Mustadio at appropriate times.

    While not tested, many of these commands mirror ATTACK.OUT commands, meaning
    that there is a chance that 0500 SPID or 0600 SPID would allow you to check if a
    specific Sprite ID is NOT in the party, but I can't confirm that.



    EVID = Event ID

    1900 EVID 0100 //Plays EVID "Aggressively" <-- For Battles
    1900 EVID 0200 //Plays EVID "Calmly"         <-- For Events

    The following command will play the Event you wish to play on that location if conditions
    are met and player walks onto or off it.

    "Aggressively" is the battle swirl-intro

    "Calmly" is the cutscene-style fade-in


    TEX# = Text ID.  Probably editable in FFTacText somewhere.
    EVD# = Event ID.

    1A00 TEX1 EVD1 TEX2 EVD2 TEX3 EVD3 TEX4 EVD4 //Display choice list

    The following command pops up a list of choices for the player to choose which
    event to play when stopping on the location. Does not trigger if the player walks past it.
    (THINK: North Wall / South Wall of Bethla Garrison or popups for things like
    Lionel Castle Gate.)


    Four choices is the apparent maximum. If you do not wish to use a choice, its TEX#
    and EVD# values should be set to 0000


    TXID = Text ID

    1D00 TXID //Displays TXID

    The following command will play a text display when conditions are met.
    Can be edited via FFTacText.

    NOTE: 1E00 and 1F00 are related to the Deep Dungeon. I don't know how their work yet, though.
    Just that the list is populated with a unique set of commands and has a maximum of 127 entries.


    LOC1 = Location to start drawing from.
    LOC2 = Location to stop drawing at.

    2000 LOC1 LOC2 // Draw path from LOC1 to LOC2

    The following command draws paths between specific locations on the map. These locations already
    exist in the game beforehand, so attempting to link two previously unlinked locations requires
    editing that data, which is not easy to do. However, lines can be drawn from either location without
    issue.

    Example: Draw from Zaland to Dorter without issue even though Vanilla draws from Dorter to Zaland.


    LOC1 = Location to start erasing from.
    LOC2 = Location to stop erasing at.

    2100 LOC1 LOC2 // Remove path from LOC1 to LOC2

    The following command removes already drawn lines from the map.  The structure is the same as
    command 2000, as can be expected.


    LCID = Location ID.
    (Location List is in the Variables (http://ffhacktics.com/wiki/Event_Instruction_B0) list on the Wiki.) (Each location is -200 Ex: Lionel Castle is 0300)

    2200 LCID // Draws location

    The following command draws a location's dot onto the map. The dot colors can be edited via event variable,
    to switch between Red & Blue


    LCID = Location ID.
    (Location List is in the Variables (http://ffhacktics.com/wiki/Event_Instruction_B0) list on the Wiki.) (Each location is -200 Ex: Lionel Castle is 0300)

    2300 LCID // Removes location

    The following command removes a location's dot onto the map.

    In case Section 1 was not informative enough, I will break down some Worldmap Hex Strings here.


    Breaks down into

    0100          6E00                    0300          1900               1400          0200         
    IFStory Progress =03Start EventEVIDCalmly

    IF VAR 0x006E (Story Progress) = 0x0003 THEN -> EXECUTE EVENT 0x0014 CALMLY


    0100          6E00                    2E00          1A00               4200          4B01                    4300          4E01                    0000          0000          0000          0000         
    IFStory Progress =2ECall Choices0x0042Execute 0x014B0x0043Execute 0x014C0x00000x00000x00000x0000

    IF VAR 0x006E (Story Progress) = 0x002E THEN -> CALL CHOICES 0x0042 AND 0x0043, EXECUTE 0x014B OR 0x014C AS CHOSEN
    (Unused Choices are 00000000 00000000 as mentioned above)


    0100          1502                    0100          0100          6E00                      1200      2300                      1500               
    IFBethla Garrison =DrawnIFStory Progress =12Remove Location15 (Bethla Garrison)

    IF VAR 0x215 (Bethla Garrison) = 0x0001 (Drawn) THEN -> IF VAR 0x006E (Story Progress) = 0x0012 THEN ->
    REMOVE MAP LOCATION 0x0015 (Bethla Garrison)

    MORE TO COME!!


    HOW TO EDIT WINNING CONDITIONS
    *All files and original tutorial by Xifanie, except Bonus Bin Utility and tutorial updates by Choto*

    Let's say you are making a story mod, you obviously haven't a need for winning condition like "Save Algus!" However,
    until recently this was sort of a pain in the ass to edit for someone not understanding of Hex. Now, thanks to Xifanie's
    original tutorial on editing these and a program made by Choto, anyone can simply edit these conditions.

    1) Download THIS FILE (https://dl.dropboxusercontent.com/u/53561892/Editing%20BONUS.BIN.rar) and extract the included PSD
     - You will also want to have Photoshop and GraphicsGale installed for this tutorial. You also need to be able to use TIMUTIL.EXE
    2) Open the PSD and edit in Photoshop. (Xifanie made this very easy to edit, so be sure to thank her)
    3) Turn off all colors (block/text edge reference layers)
    4) Save it as a BMP file
    5) Open the BMP in GraphicsGale
    6) Set the color depth to 8bit/256 colors
    7) Import the first palette from the 8bit original BMP and black for everything else. Make sure the "Match Pixels with Colors" box is checked.
    (https://dl.dropboxusercontent.com/u/53561892/Pixels.png)
    8) Set the color depth to 4bit/16 colors
    9) Import the first palette again, again, make sure the "Match Pixels with Colors" box is checked.
    10) Save
    11) Open the BMP in TIMUTIL.EXE
    12) Convert to a 4bit TIM with translucent all but black & transparent black
    13) Start "Bonus Bin Utility.exe", Select your BONUS.BIN file (must be extracted from you ISO), Then select your .TIM file, and hit save.
    14) Import BONUS.BIN and enjoy!

    Title: Re: Change Map Tutorial
    Post by: Argy on December 28, 2011, 10:06:52 am
    Brilliant work Elric!  I will try this out on Thursday night! As I always say, keep these great tutes coming!!
    Title: Re: Change Map Tutorial
    Post by: Jon on December 28, 2011, 03:09:54 pm
    Excellent video and tutorial step by step. This really helps me a lot! Thank you! :mrgreen:
    Title: Re: Change Map Tutorial
    Post by: Elric on December 28, 2011, 06:45:28 pm
    You guys are very welcome, I'm glad that its helpful. If you have any questions or any issues be sure to let me know.  :mrgreen:
    Title: Re: Change Map Tutorial
    Post by: Kokojo on December 28, 2011, 09:35:21 pm
    Godamnit you're amazing, Elric.
    Title: Re: Change Map Tutorial
    Post by: Pride on December 28, 2011, 09:59:12 pm
    Impressive!
    Title: Re: Change Map Tutorial
    Post by: Jon on December 29, 2011, 07:23:29 am
    What does {49}() and {63}(rc9) do? You have {49}() at the beginning of every event (in parts 1-7). Actually I am just beginning to learn to event edit thanks to Raven, and I wrote this very simple event (with his help) and at first there were errors with the WarpUnit but the map would show up and the 2 characters, but the Orbonne prayer sequence dialog would play. Now after rewriting and fixing it, all I get is a totally black screen and after about 1 second the only dialog box pops up, I press O to close it and it goes to the Now Loading... screen and the Orbonne battle starts...can you tell me whats wrong with this please? Also I see {60}(r003c) and {3E}(r02000000FFFFFF3c00) in part 7 in the pink box and I have no idea what those are...

    My event:
    Offset(x00004000)

    {7C}()
    LoadEVTCHR(x01,x00,x00)
    WaitForInstruction(x34,x00)
    SaveEVTCHR(x01)
    {6D}(r0000)
    Erase(x80,x00)
    Erase(x81,x00)
    WarpUnit(x80,x00,003,008,x00,x00)
    WarpUnit(x81,x00,003,010,x00,x00)
    Draw(x80,x00)
    Draw(x81,x00)
    Wait(00050)
    Focus(x80,x00,x80,x00,x00)
    Wait(00050)
    DisplayMessage(x10,x10,x0001,x80,x00,x00,+00000,

    +00000,+00000,x02)
    WaitForInstruction(x01,x00)
    CloseDialog(x01,xFFFF,x00,x00)
    Wait(00200)
    EventEnd()

    //Message x01
    {font:08}Black Mage{br}
    {font:00}Hi White Mage!{br}
    What's up?{end}


    Edit: I will also try using your step 7 because it has dialog. I think (actually I know because of the video) that your process works, so I think I'll use it :mrgreen:

    Edit2: I changed my event to reflect yours (part 7) with a few differences but I still get a black screen and the dialog box displays correctly...
    //____Don't Remove This Comment
    Offset(x00004000)

    {49}()
    UnitPresent(x80,x00,x01)
    UnitPresent(x81,x00,x01)
    AddUnitStart()
    Wait(00030)
    AddUnitEnd()
    WarpUnit(x80,x00,003,008,x00,x00)
    WarpUnit(x81,x00,003,010,x00,x02)
    Wait(00025)
    Draw(x80,x00)
    Draw(x81,x00)
    Wait(00030)
    DisplayMessage(x10,x10,x0001,x80,x00,x00,+00000,+00000,+00000,x02)
    WaitForInstruction(x01,x00)
    Wait(00080)
    {60}(r003c)
    {3E}(r02000000FFFFFF3c00)
    Wait(00075)
    EventEnd()

    //Message x01
    {font:08}Black Mage{br}
    {font:00}Hi White Mage!{br}
    What's up?{end}
    //____Don't Remove This Comment
    Title: Re: Change Map Tutorial
    Post by: Elric on December 29, 2011, 08:23:44 am
    Quote from: Jon on December 29, 2011, 07:23:29 am
    What does {49}() and {63}(rc9) do? You have {49}() at the beginning of every event (in parts 1-7). Actually I am just beginning to learn to event edit thanks to Raven, and I wrote this very simple event (with his help) and at first there were errors with the WarpUnit but the map would show up and the 2 characters, but the Orbonne prayer sequence dialog would play. Now after rewriting and fixing it, all I get is a totally black screen and after about 1 second the only dialog box pops up, I press O to close it and it goes to the Now Loading... screen and the Orbonne battle starts...can you tell me whats wrong with this please? Also I see {60}(r003c) and {3E}(r02000000FFFFFF3c00) in part 7 in the pink box and I have no idea what those are...

    My event:
    Offset(x00004000)

    {7C}()
    LoadEVTCHR(x01,x00,x00)
    WaitForInstruction(x34,x00)
    SaveEVTCHR(x01)
    {6D}(r0000)
    Erase(x80,x00)
    Erase(x81,x00)
    WarpUnit(x80,x00,003,008,x00,x00)
    WarpUnit(x81,x00,003,010,x00,x00)
    Draw(x80,x00)
    Draw(x81,x00)
    Wait(00050)
    Focus(x80,x00,x80,x00,x00)
    Wait(00050)
    DisplayMessage(x10,x10,x0001,x80,x00,x00,+00000,

    +00000,+00000,x02)
    WaitForInstruction(x01,x00)
    CloseDialog(x01,xFFFF,x00,x00)
    Wait(00200)
    EventEnd()

    //Message x01
    {font:08}Black Mage{br}
    {font:00}Hi White Mage!{br}
    What's up?{end}


    Edit: I will also try using your step 7 because it has dialog. I think (actually I know because of the video) that your process works, so I think I'll use it :mrgreen:

    Edit2: I changed my event to reflect yours (part 7) with a few differences but I still get a black screen and the dialog box displays correctly...
    //____Don't Remove This Comment
    Offset(x00004000)

    {49}()
    UnitPresent(x80,x00,x01)
    UnitPresent(x81,x00,x01)
    AddUnitStart()
    Wait(00030)
    AddUnitEnd()
    WarpUnit(x80,x00,003,008,x00,x00)
    WarpUnit(x81,x00,003,010,x00,x02)
    Wait(00025)
    Draw(x80,x00)
    Draw(x81,x00)
    Wait(00030)
    DisplayMessage(x10,x10,x0001,x80,x00,x00,+00000,+00000,+00000,x02)
    WaitForInstruction(x01,x00)
    Wait(00080)
    {60}(r003c)
    {3E}(r02000000FFFFFF3c00)
    Wait(00075)
    EventEnd()

    //Message x01
    {font:08}Black Mage{br}
    {font:00}Hi White Mage!{br}
    What's up?{end}
    //____Don't Remove This Comment



    Hey Jon, the commands you asked about are all labeled in the spoilers tab under colors :D that's why i made it that way, every command in this tutorial is circled and then broken down by color in the Colors Tab.
    also, if you go download Ravens new EVSP 1.8, {49}() is actually  known command now, AddUnitPrep and it is used to add units that aren't set to present in the ENTD.

    Also the reason you are having a problem is that you don't have a Camera setup, such as what is in the green box in the first picture, it would need to look something like this

    {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)

    The easiet way for you to set this up would be to find the event you are working on in Vanilla and take it's camera settings and put them in this format, you may also benefit from Kokojo's basic event editing tutorial here
    http://ffhacktics.com/smf/index.php?topic=4067.0

    This is necessary to see the map those i don't know exactly what {63}(rC9) and {4D}(r78) do exactly, i always use them and never have an issue, the reason you didn't have to before was because Raven had you use a focus command, which isn't always the ideal thing to do, but works fine in a small practice event

    If you ever need help and Raven isn't around or is busy feel free to PM me or send me a message on IRC, I'm always glad to help  :mrgreen:
    Title: Re: Change Map Tutorial
    Post by: Jon on December 29, 2011, 01:28:31 pm
    Thank you very much! You and Raven help me tremendously! :mrgreen:

    Gonna add camera movements now! Hope it'll work this time!
    Title: Re: Change Map Tutorial
    Post by: Jon on December 29, 2011, 04:56:52 pm
    Still black screen after many tests and edits:

    Offset(x00004000)


    {63}(rAA)
    {60}(r003C)
    Wait(00020)
    UnitAnim(x01,x01,x02,x00,x00)
    Wait(00020)
    {1C}(r02)
    DarkScreen(x00,x01,012,064,x00,004)
    WaitForInstruction(x36,x00)
    DisplayConditions(x02,060)
    WaitForInstruction(x38,x00)
    DisplayConditions(x03,060)
    WaitForInstruction(x38,x00)
    DisplayConditions(x04,060)
    WaitForInstruction(x38,x00)
    DisplayConditions(x05,060)
    WaitForInstruction(x38,x00)
    DisplayConditions(x06,060)
    WaitForInstruction(x38,x00)
    DisplayConditions(x07,060)
    WaitForInstruction(x38,x00)
    RemoveDarkScreen()
    WaitForInstruction(x36,x00)
    {7c}()
    WaitForInstruction(x34,x00)
    {6D}(r0000)
    Erase(x80,x00)
    Erase(x81,x00)
    ColorField(x80,+000,+000,+000,010)
    WarpUnit(x80,x00,003,008,x00,x00)
    WarpUnit(x81,x00,003,010,x00,x00)
    Draw(x80,x00)
    Draw(x81,x00)
    Wait(00050)
    DisplayMessage(x10,x10,x0001,x80,x00,x00,+00000,

    +00000,+00000,x02)
    WaitForInstruction(x01,x00)
    CloseDialog(x01,xFFFF,x00,x00)
    Wait(00200)
    {1C}(r01)
    Wait(00090)
    {63}(rAA)
    Camera(+10000,-01360,+10000,+00128,+00256,+10000,-

    01024,+00144)
    Wait(00060)
    {60}(r003C)
    {3E}(r02000000FFFFFF4000)
    WaitForInstruction(x0C,x00)
    EventEnd()

    //INSTRUCTION SECTION END -  TEXT START
    //Message x01
    {font:08}Black Mage{br}
    {font:00}Hi White Mage!{br}
    What's up?{end}
    Title: Re: Change Map Tutorial
    Post by: Elric on December 30, 2011, 09:04:32 pm
    Here you go Jon, this is how it should look (tho you will have to adjust the camera angle)

    Offset(x00004000)

    {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)

    Wait(00020)
    UnitAnim(x01,x01,x02,x00,x00)
    Wait(00020)
    DisplayMessage(x10,x10,x0001,x80,x00,x00,+00000,+00000,+00000,x02)
    WaitForInstruction(x01,x00)
    CloseDialog(x01,xFFFF,x00,x00)
    Wait(00060)
    {60}(r003C)
    {3E}(r02000000FFFFFF4000)
    WaitForInstruction(x0C,x00)
    EventEnd()

    //INSTRUCTION SECTION END -  TEXT START
    //Message x01
    {font:08}Black Mage{br}
    {font:00}Hi White Mage!{br}
    What's up?{end}
    Title: Re: Change Map Tutorial
    Post by: Jon on December 31, 2011, 02:27:38 pm
    Got another problem, figured this was the best place to post it:
    (http://i810.photobucket.com/albums/zz26/jonsbucketsprites/BadEvent.png)
    Offset(x00004000)

    {63}(r8A)
    Focus(x80,x00,x01,x00,x00)
    Camera(+00448,+00048,+00896,+00302,+00000,+00000,+04096,+00050)
    WaitForInstruction(x04,x00)
    {63}(rA9)
    WaitForInstruction(x34,x00)
    Camera(+00168,+00179,+00616,+00302,+00512,+00000,+04096,+00090)
    {4D}(r78)
    Focus(x80,x00,x80,x00,x00)
    UnitAnim(x80,x01,x01,x00,x00)
    Wait(00010)
    DisplayMessage(x10,x12,x0001,x80,x00,x00,+00000,+00000,+00000,x00)
    EventEnd()

    //Message x01
    {font:08}King Cornelia{br}
    {font:00}Yo whats up Warriors?!{end}

    I know that there isn't too much code, I wanna keep my events as simple and easy as possible, plus there is no reason whatsoever for anything fancy in the opening scene...
    Title: Re: Change Map Tutorial
    Post by: Elric on December 31, 2011, 05:46:02 pm
    Quote from: Jon on December 31, 2011, 02:27:38 pm
    Got another problem, figured this was the best place to post it:
    (http://i810.photobucket.com/albums/zz26/jonsbucketsprites/BadEvent.png)
    Offset(x00004000)

    {63}(r8A)
    Focus(x80,x00,x01,x00,x00)
    Camera(+00448,+00048,+00896,+00302,+00000,+00000,+04096,+00050)
    WaitForInstruction(x04,x00)
    {63}(rA9)
    WaitForInstruction(x34,x00)
    Camera(+00168,+00179,+00616,+00302,+00512,+00000,+04096,+00090)
    {4D}(r78)
    Focus(x80,x00,x80,x00,x00)
    UnitAnim(x80,x01,x01,x00,x00)
    Wait(00010)
    DisplayMessage(x10,x12,x0001,x80,x00,x00,+00000,+00000,+00000,x00)
    EventEnd()

    //Message x01
    {font:08}King Cornelia{br}
    {font:00}Yo whats up Warriors?!{end}

    I know that there isn't too much code, I wanna keep my events as simple and easy as possible, plus there is no reason whatsoever for anything fancy in the opening scene...


    xD JON!, your still not doing the camera right lol, you need to setup it up the way I showed you :P

    Once I'm more awake i will show you exactly what went wrong here :D

    EDIT: Awake now, okay "King Cornelia" isnt near the camera which will cause an issue, and you don't need the focus, normally when i use focus it doesnt work until the set camera moves over that person, which yours does not

    Also your cameras are set different.. (the have different numbers) they shouldn't be until after the 3 initial camera settings :P (see the events i sent you, they are identical (or at least the first 2 are, with the only difference being the time))

    You also have you X, and Y setup not far enough, which is why the camera doesn't go to the part of the screen that it should

    One more thing you FOCUS is setup wrong as well, since focus your suppose to use the same ID twice, should look like

    Focus(x80,x00,x80,x00,x00), you have 2 of them, one is setup incorrectly

    The main issue i see is that you have a lot of small things that do not need to be there at all, see the last message i posted and how much of your event i moved, tho none of it would change what you were trying to do, it was simply not needed  :mrgreen:

    I hope this helps and i await your next question  :mrgreen:
    Title: Re: Change Map Tutorial
    Post by: Jon on January 01, 2012, 07:35:01 am
    Thanks for your reply! I feel kinda dumb now lol xD. Kinda like a monkey trying how to figure out how to steer a rocket ship. I don't really think I'll need too many fancy camera movements, like a "no rotating rule" would be good idea since I have no idea what I'm doing to begin with when it comes to the camera. I think I will look at some of your events and simply copy / paste your cameras, sorry for stealing like that xD

    Is there a simple way to have for every event (I know this is gonna sound boring) the camera just sorta nice and fixed (no rotations or map rotations) and then right when the event begins just Focus() from then on onto the unit that is speaking? So actually in a sense like FF1, whoever talks gets a camera focus. You know what I mean? Also is there an easy way of figuring out where text balloons will show up? Having them always show up more or less centered above the speaking unit would be fine for now I suppose...I'll make an edit or new post later letting you know how its going xD
    Title: Re: Change Map Tutorial
    Post by: Elric on January 01, 2012, 07:42:58 am
    Quote from: Jon on January 01, 2012, 07:35:01 am
    I don't really think I'll need too many fancy camera movements, like a "no rotating rule" would be good idea since I have no idea what I'm doing to begin with when it comes to the camera. I think I will look at some of your events and simply copy / paste your cameras, sorry for stealing like that xD

    Is there a simple way to have for every event (I know this is gonna sound boring) the camera just sorta nice and fixed (no rotations or map rotations) and then right when the event begins just Focus() from then on on the unit that is speaking? So actually in a sense like FF1, whoever talks gets a camera focus. You know what I mean? Also is there an easy way of figuring out where text balloons will show up? Having them always show up more or less centered above the speaking unit would be fine for now I suppose...


    You can steal anything you want XD, thats why i sent them to you, just don't use my dialogue :P

    yes you would need to have the camera setup to be in that spot and set them all to very low time, you will see some of this in my events.
    also as long as you are using the 12 command (as you already are) in the speech box, it will center of the chars head, but your char wasnt on the camera :P
    Title: Re: Change Map Tutorial
    Post by: Jon on January 01, 2012, 08:38:06 am
    Okay, this is really weird now, my code allowed me to do this
    (http://i810.photobucket.com/albums/zz26/jonsbucketsprites/WeirdError.png)
    Offset(x00004000)

    {63}(rC9)
    Camera(+00660,-00896,+00192,+00341,+00256,+00000,+04096,+00001)
    Camera(+00660,-00896,+00192,+00341,+00256,+00000,+04096,+00200)
    {4D}(r78)
    WaitForInstruction(x34,x00)
    Camera(+00660,-00896,+00192,+00341,+00256,+00000,+04096,+00200)
    {4D}(r78)
    UnitAnim(x0B,x01,x01,x00,x00)
    Wait(00010)
    DisplayMessage(x10,x12,x0001,x0B,x00,x00,+00000,+00000,+00000,x00)
    EventEnd()

    //Message x01
    {font:08}King Cornelia{br}
    {font:00}Yo whats up Warriors?!{end}



    Edit: First ever custom event done! King Cornelia and the Chancellor give their speech and request the Warriors of Light to save the Princess, they turn around and run outta the castle! All's well, now time to make the first battle against Garland! Thanks Elric and Raven for helping me all the time!!
    Title: Re: Change Map Tutorial
    Post by: Elric on January 01, 2012, 10:19:50 pm
    Hey Jon, (assuming this is still all working correctly after i showed you how to fix it on IRC) can you post the event here now?
    This would be so anyone in the future with a similar issue can see how it was fixed. A screenshot would be great as well  :mrgreen:
    Title: Re: Change Map Tutorial
    Post by: Jon on January 02, 2012, 04:00:53 pm
    (http://i810.photobucket.com/albums/zz26/jonsbucketsprites/FF1Screenshot.png)

    Offset(x00004000)

    UnitAnim(x01,x01,x07,x00,x00)

    {63}(rC9)
    Camera(+00500,-00144,+00775,+00341,+00512,-00000,+04096,+00001)
    Camera(+00500,-00144,+00775,+00341,+00512,-00000,+04096,+00128)
    {4D}(r78)
    Camera(+00500,-00144,+00775,+00341,+00512,-00000,+04096,+00128)
    WaitForInstruction(x04,x00)


    Wait(00010)
    DisplayMessage(x10,x10,x0001,x0B,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x12,x0002,x01,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x10,x0003,x0B,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x12,x0004,x0A,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x10,x0005,x0B,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x12,x0006,x0A,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x10,x0007,x0B,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    RotateUnit(x01,x00,x00,x00,x0A,000)
    RotateUnit(x04,x00,x00,x00,x0A,000)
    RotateUnit(x21,x00,x00,x00,x0A,000)
    RotateUnit(x13,x00,x00,x00,x0A,000)
    RotateUnit(x0D,x00,x00,x00,x0A,000)
    RotateUnit(x07,x00,x00,x00,x0A,000)
    Wait(00050)
    WalkTo(x01,x00,004,000,x00,x00,+032,x01)
    WalkTo(x04,x00,003,000,x00,x00,+032,x01)
    WalkTo(x21,x00,005,000,x00,x00,+032,x01)
    WalkTo(x13,x00,004,000,x00,x00,+032,x01)
    WalkTo(x0D,x00,003,000,x00,x00,+032,x01)
    WalkTo(x07,x00,005,000,x00,x00,+032,x01)
    WaitWalk(x01,x00)
    WaitWalk(x04,x00)
    WaitWalk(x21,x00)
    WaitWalk(x13,x00)
    WaitWalk(x0D,x00)
    WaitWalk(x07,x00)
    Erase(x01,x00)
    Erase(x04,x00)
    Erase(x21,x00)
    Erase(x13,x00)
    Erase(x0D,x00)
    Erase(x07,x00)
    {3E}(r02000000FFFFFF3C00)
    Wait(00010)
    EventEnd()

    //Message x01
    {font:08}King Cornelia{br}
    {font:00}Welcome travelers. I am told you carry crystals.{br}
    Is this true?{end}

    //Message x02
    {font:08}{Ramza}{br}
    {font:00}It is, your Majesty.{end}

    //Message x03
    {font:08}King Cornelia{br}
    {font:00}It's just as Lukahn's prophecy foretold:{br}
    {br}
    "When darkness veils the world, six{br}
    Warriors of Light shall come."{end}

    //Message x04
    {font:08}Chancellor{br}
    {font:00}Your Majesty, we cannot be certain that these{br}
    are the warriors foretold by the prochecy.{end}

    //Message x05
    {font:08}King Cornelia{br}
    {font:00}Yet they stand before us with the crystals.{br}
    I cannot dismiss this as a mere coincidence.{br}
    Crystal bearers, there is a task I would{br}
    ask of you.{br}
    Will you not rescue my daughter, Sarah?{end}

    //Message x06
    {font:08}Chancellor{br}
    {font:00}Garland, a knight once in His Majesty's service,{br}
    has abducted Princess Sarah.{br}
    I ask for your aid in the name of His Majesty,{br}
    the king of Cornelia.{br}
    {br}
    Garland has taken refuge in the Chaos Shrine,{br}
    which lies to our north.{br}
    {br}
    Of course, we did attempt to save the{br}
    princess ourselves...{br}
    {br}
    But Garland is the finest swordsman in{br}
    the kingdom. We have none who can{br}
    match him.{end}

    //Message x07
    {font:08}King Cornelia{br}
    {font:00}I have heard that you wish to journey{br}
    to the continent to our north.{br}
    The bridge leading north was lost long{br}
    ago, making passage impossible.{br}
    {br}
    If you can rescue Sarah, I will have the{br}
    bridge rebuilt as a sign of my gratitude.{br}
    {br}
    Go now, Warriors of Light, and do not{br}
    fail me!{end}

    (http://i810.photobucket.com/albums/zz26/jonsbucketsprites/FF1FFTPatcher.png)
    Title: Re: Change Map Tutorial
    Post by: Elric on January 06, 2012, 08:37:58 pm
    Thank you for posting this Jon, sorry it took me a few days to get back to you :P I've been working on a million.1 things lately,
    but i wanted to let you know that your doing a great job and are obviously starting to understand more about making events flow well,
    I do have several suggestions that might help to improve this event if your interested. It involves using Blocks. Hit me up on IRC
    sometime and i will help you out anyway i can as I've said before :D

    And keep up the good work bro! We NEED more events editors around here!!!
    Title: Re: Change Map Tutorial
    Post by: Jon on January 08, 2012, 07:48:12 pm
    :mrgreen: Tell me about blocks!
    Title: Re: Change Map Tutorial
    Post by: Elric on January 08, 2012, 08:22:50 pm
    okie dokie

    What you would do is this

    BlockStart()


    BlockEnd()


    anything inside of this block will happen at the same time as what comes after it

    so say you want 3 people to walk at the same time instead of having the walk commands setup the way you do
    you could do:

    BlockStart()
    Walkto:---
    Waitwalk:---
    BlockEnd()

    BlockStart()
    Walkto:---
    Waitwalk:---
    BlockEnd()

    BlockStart()
    Walkto:---
    Waitwalk:---
    BlockEnd()

    and those three units that you setup to do that will all walk and then perform there next action inside the
    block without being effected by the other walking characters.

    Also there is a WaitForInstruction command to makes the game wait for a block to finish as well so you can setup all 3 of
    these and then put that afterwords so that once everyone was done walking you could proceed but at the same time not
    have the units walking or stopping effected by when another characters walking cycle ends  :mrgreen:

    Hope this makes sense, i will cover it more in my next part of my tutorial :D
    Title: Re: Change Map Tutorial
    Post by: Jon on January 09, 2012, 11:25:44 am
    Makes total sense, thanks. Sounds like you could have literally all 16 units (at max) doing separate, totally random things all at the same time. What I don't understand is like the way I did it, can't I do the exact same thing? In the game all 6 Warriors of Light all rotate together at the same time and charge towards the door as well...does making blocks help the game read the code then or something? Can you post a very simple example of where a Block() is absolutely needed and show why it wouldn't work without it please?
    Title: Re: Change Map Tutorial
    Post by: Elric on January 09, 2012, 11:31:08 am
    Well I'm not saying it will work any better or that in some circumstances it has to be that way or anything, I'm just saying that in certain circumstances where you want several things to happen at once you can use blocks without to worry about what may be below that action interrupting or affecting the current action :D i will go into more detail when i get this part of the tutorial done in a few days :D

    NOTE: Cameras and Messages cannot be put in blocks
    Title: Re: Change Map Tutorial
    Post by: Jon on January 09, 2012, 06:41:34 pm
    Thank you! I'll try to remember that cameras and messages can't go in blocks. Actually, while I was thinking about it, I think I see a few reasons to use blocks. One obviously being organisation like always, but also I think it might have to do with Unit Animations and Spell Effects...? Okay you don't have to answer, I'll wait for your tutorial :mrgreen:
    Title: Re: Change Map Tutorial
    Post by: Elric on January 09, 2012, 07:02:47 pm
    Quote from: Jon on January 09, 2012, 06:41:34 pm
    Thank you! I'll try to remember that cameras and messages can't go in blocks. Actually, while I was thinking about it, I think I see a few reasons to use blocks. One obviously being organisation like always, but also I think it might have to do with Unit Animations and Spell Effects...? Okay you don't have to answer, I'll wait for your tutorial :mrgreen:


    Haha, I'm always willing to answer questions :P

    Effects can go into Blocks, but i wouldnt recommend it, since besides the fact that i believe it requires a special trigger, I know that if you do more then 1 effect at a time the game will freeze XD
    But yes, i often use them at the very beginning of an event to setup my unitanimations like standing before the camera starts, as well as using them to erase any units that i would like to be invisible at the beginning of the event, this way you can be sure it's all taken care of before the camera even starts
    Title: Re: Event Editing 101 WIP
    Post by: Elric on April 02, 2012, 07:03:22 pm
    So, this used to be my ChangeMap tutorial, but since I have some free time while waiting on some stuff to be finished for Jot5, I figured I would start on my all out event editing tutorial.
    This still has a long way to go since I've only been working on it for a day or so, and I will have a news announcement once it is finished, since there isn't enough to need one just yet.

    Tho I would greatly appreciate any kind of feedback on what is already done, and if you have any questions or things you would like me to particularly explain I will be happy to do so.
    The ChangeMap Tutorial is still here as well, and is located up under the Extra's section of the main post.

    The main reason I made this post is so people can review what is done so far in sections 1 and 2 and make sure it's easy enough to understand, since I want this to be a guide so that
    anyone can just start event editing.
    Title: Re: Event Editing 101 WIP
    Post by: Taichii on April 02, 2012, 10:21:32 pm
    so full of win bro XD
    i'll read on it later XD
    Title: Re: Event Editing 101 WIP
    Post by: Joseph Strife on April 03, 2012, 10:51:08 am
    Awesome Elric, simply awesome, gonna try it soon! Epic Work! :D
    Title: Re: Event Editing 101 WIP
    Post by: Wolfman666 on May 30, 2012, 11:41:55 am
    Awesome tutorial, I am really new to this and it is very helpful so far. I'm still stuck in part one though, for some reason when I open up my .bin file in Shishi it doesn't have me restructure, not sure if it is because I had already opened it in Shishi Prior to this. When I open up the file in CDMAGE, it gives me error message: Data Track has errors in the file system, content of data track may be displayed incorrectly. It doesn't ask to continue Parsing. It then opens up the bin under session 1, then track 1 then it has battle and Dummy folders, but not all the other ones I need like Event, etc. I don't know if this is an issue I can fix somehow or if I need to make a new image file of the game or what. I have been able to successfully patch things before, such as sprite changes, text, etc. I downloaded the versions of things you have posted with the tutorial, so not sure if it might be something to do with those rather than the ones I had used before. Anyways, any advice I can get on these issues would be very welcome, thanks.
    Title: Re: Event Editing 101 WIP
    Post by: Elric on May 30, 2012, 07:32:50 pm
    Quote from: Wolfman666 on May 30, 2012, 11:41:55 am
    Awesome tutorial, I am really new to this and it is very helpful so far. I'm still stuck in part one though, for some reason when I open up my .bin file in Shishi it doesn't have me restructure, not sure if it is because I had already opened it in Shishi Prior to this. When I open up the file in CDMAGE, it gives me error message: Data Track has errors in the file system, content of data track may be displayed incorrectly. It doesn't ask to continue Parsing. It then opens up the bin under session 1, then track 1 then it has battle and Dummy folders, but not all the other ones I need like Event, etc. I don't know if this is an issue I can fix somehow or if I need to make a new image file of the game or what. I have been able to successfully patch things before, such as sprite changes, text, etc. I downloaded the versions of things you have posted with the tutorial, so not sure if it might be something to do with those rather than the ones I had used before. Anyways, any advice I can get on these issues would be very welcome, thanks.


    Hello Wolfman, the reason Shishi doesn't restructure is because you've already done so, and it doesn't need to be done more then once. Now the reason CDMage may not be working for you is the version, you must make sure you have CDMage B5, you can get it at the link I provided (make sure you click on BETA release)

    Also, you should only be opening the bin/iso/img in Mode 2 on CDMage.

    One other thing, you may be having an error if you are playing a patched version of the game, for this tutorial, it assumes you are using a vanilla copy, so for best results i would suggest using a vanilla version of FFT.

    Hope this helps, and if you have any other questions, don't hesitate to ask.
    Title: Re: Event Editing 101 WIP
    Post by: Wolfman666 on May 30, 2012, 08:02:45 pm
    Thank you for the quick reply Elric. I downloaded the correct version of cdmage and that fixed that problem, and ended up running into another problem. I followed the first tutorial to the part where you actually patch the vanilla final fantasy tactics file with the modded ENTD, but when I tried patching it, a box popped up which said: An error of type System.IO.IOException occurred: IO error occurred. Is this a common problem people have had with an easy solution or did I do something wrong? Thanks again for all your help, real eager to get started on modding the best PSX game of all time!
    Title: Re: Event Editing 101 WIP
    Post by: Elric on May 30, 2012, 08:28:57 pm
    Quick reply? That took me like 10 hours lol (damn work) anyway,

    When patching with any program make sure that you don't have the image open in another program still :P

    This is a very common issue that people experience and I myself do it quite often. Just make sure that you closed CDMage, and Shishi before trying to patch with FFTPatcher
    and this SHOULD fix your issue, if not, post a screenshot.
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on August 21, 2012, 05:32:48 pm
    what's wrong ?

    ATTACK.OUT Editor
    Title: Re: Event Editing 101 WIP
    Post by: Xifanie on August 21, 2012, 06:25:10 pm
    You need the ATTACK.OUT file in the same folder as the program.
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on August 22, 2012, 09:58:28 am
    can you please show me screenshot sample
    Title: Re: Event Editing 101 WIP
    Post by: Jon on August 24, 2012, 11:28:34 am
    Hey Elric! Whats up and I'm back again with something totally new. Like I need some help with panning the camera to different angles, actually not really rotating it, just moving it over from the current position to the right- like how would I move the camera from this screenshot so it moves a bit northeast from this position to show Delita who is off camera?  I don't really absolutely need to got northeast, I could just move the camera east but it would be weird because Cloud would have seen Delita there all along...
    Also can I have the camera more centered on Cloud, right now he's kinda not in the middle but slightly down and to the right...(this however is fine, I am just a perfectionist, the camera can stay like this if its too much work)

    (Note: I know the text bubble is wrong atm, my mistake ignore it please, gonna fix that real soon)
    Title: Re: Event Editing 101 WIP
    Post by: CONMAN on August 24, 2012, 07:29:29 pm
    What's wrong with changing the x/y axis in the camera comand to focus on Cloud?  Also, you wish to reveal Delita after a certain point- why dont you then copy your original camera command and adjust the camera/ or map angle when you want to reveal with a second camera command? 
    Title: Re: Event Editing 101 WIP
    Post by: Jon on August 25, 2012, 06:34:04 am
    Yeah, I'll try Conman, I'm just really rusty with this stuff. I'll think of something...

    @MasterGrand:
    In order to get ATTACK.OUT working you need both the program and the file, ATTACK.OUT editor and ATTACK.OUT. In order to get the ATTACK.OUT file, you need to open your ISO with CDMage, extract it from the Events folder, then put it in the same folder of the editor. Please see the screen shots.
    Title: Re: Event Editing 101 WIP
    Post by: Elric on August 25, 2012, 01:29:32 pm
    Jon, you would take the same camera command you already have and make it move about +300 on the X Axis, at a time of 00256, this should make it pan over in that direction slowly
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on August 25, 2012, 02:23:02 pm
    Quote from: Jon on August 25, 2012, 06:34:04 am
    Yeah, I'll try Conman, I'm just really rusty with this stuff. I'll think of something...

    @MasterGrand:
    In order to get ATTACK.OUT working you need both the program and the file, ATTACK.OUT editor and ATTACK.OUT. In order to get the ATTACK.OUT file, you need to open your ISO with CDMage, extract it from the Events folder, then put it in the same folder of the editor. Please see the screen shots.


    Thanks for help us Jon, I need someone give me example  for all commands event editor . like how add other characters in event also how make message for other characters and how make effects magic...etc

    Thanks advance 
    Title: Re: Event Editing 101 WIP
    Post by: Elric on August 25, 2012, 08:12:27 pm
    Master Grand, I already suggested that you watch my 2 event editing tutorial videos to explain those things you are asking for :P
    Title: Re: Event Editing 101 WIP
    Post by: Jon on August 26, 2012, 09:34:46 am
    I'm still having difficulty with the camera movements. This is what happens (sorry the audio is like 1 second slow):

    http://www.youtube.com/watch?v=VSEgrPAkz_8


    Code here (dialogue is not really done and this isn't the definite version):
    Offset(x00004000)

    UnitAnim(x01,x01,x07,x00,x00)

    {63}(rC9)
    Camera(+00500,-00144,+00775,+00341,+00512,-00000,+04096,+00001)
    Camera(+00500,-00144,+00775,+00341,+00512,-00000,+04096,+00128)
    {4D}(r78)
    Camera(+00500,-00144,+00775,+00341,+00512,-00000,+04096,+00128)
    WaitForInstruction(x04,x00)
    Wait(00010)
    DisplayMessage(x10,x10,x0001,x01,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x12,x0002,x02,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    Camera(+00224,+00000,+00392,+00512,-00000,+04096,+00128,+00128)
    DisplayMessage(x10,x10,x0003,x01,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x12,x0004,x02,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x10,x0005,x01,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x12,x0006,x02,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x10,x0007,x01,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00050)
    DisplayMessage(x10,x10,x0008,x02,x00,x00,+00000,+00000,+00000,x00)
    Wait(00050)
    DisplayMessage(x10,x10,x0009,x01,x00,x00,+00000,+00000,+00000,x00)
    Wait(00050)
    EventEnd()

    //Message x01
    {font:08}Cloud{br}
    {font:00}See Ramza, I'm no good to anyone. Not{br}
    in this world or any other...{end}

    //Message x02
    {font:08}Voice{br}
    {font:00}I think its time to go home,{br}
    Cloud.{end}

    //Message x03
    {font:08}Cloud{br}
    {font:00}Tifa...They're all waiting{br}
    for us, aren't they..?{end}

    //Message x04
    {font:08}Tifa{br}
    {font:00}What happened to you?{br}
    You don't look well.{end}

    //Message x05
    {font:08}Cloud{br}
    {font:00}...Yeah? It's nothing.{br}
    I'm okay.{end}


    Could you please help me out and get the camera right? Then I can continue with the rest :mrgreen:

    Edit: Now how the camera looks...
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on August 26, 2012, 10:44:16 am
    Quote from: Elric on August 25, 2012, 08:12:27 pm
    Master Grand, I already suggested that you watch my 2 event editing tutorial videos to explain those things you are asking for :P


    Thanks Elric for reply me :) but can you teach me how make effects magic also move sprite to other place in event also how let him/her stand without move in same place...etc

    Best regards
    Title: Re: Event Editing 101 WIP
    Post by: Elric on August 26, 2012, 10:56:50 am
    For standing on a panel without walking you need to add a unitanim command with SEQ 02 which is standing.

    For making a different char appear after a effect happens, you need to change that person in the ENTD.

    I have videos showing all the effect and effect numbers in the entire game on my youtube channel
    I also have videos showing all the Unitanim.
    As well as another video showing how to use ENTD ;)

    I hope this helps
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on August 26, 2012, 03:23:34 pm
    Thanks Elric but when i changed Rad in begin event no any character show ?
    What is wrong ?
    Title: Re: Event Editing 101 WIP
    Post by: DrHobo on February 04, 2013, 11:02:34 pm
    Please don't post the same thing in 2 different places, even if a thread has not had any recent activity, we can still
    see when something new has been posted to it.

    I answered your question in the other post.

    -Elric
    Title: Re: Event Editing 101 WIP
    Post by: SojournerRena on February 06, 2013, 08:17:10 pm
    I'm really sorry if I shouldn't be posting in this but I followed the Video instructions just fine up til the very end.. When I right click the test.evt there is no import option shown to me on CDMage. I have tried everything I can think of (Which probably isn't much) to get the file where it needs to go and of course nothing seemed to work.

    I have all the programs this place has to offer and on a basic level I know how to use them..so I'm not really sure where I'm making an error.

    -edit- Upon thinking I am even more sorry if this same question has already been asked in the thread.. When I looked I didn't see it..
    Title: Re: Event Editing 101 WIP
    Post by: Elric on February 06, 2013, 08:36:07 pm
    The problem is that you have a old version of CDMage, use the one i linked in the first post, or find and download CDMage B5.
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on April 23, 2013, 07:14:49 am
    i have problem when i run Attack.OUT show message :Invalid filename  :?

    (http://i.imgur.com/fENvSul.png)
    Title: Re: Event Editing 101 WIP
    Post by: Pride on April 23, 2013, 11:40:07 am
    Do you have the Attack.OUT in the same folder as the program?
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on April 23, 2013, 12:17:11 pm
    Quote from: Pride on April 23, 2013, 11:40:07 am
    Do you have the Attack.OUT in the same folder as the program?


    Sure
    Title: Re: Event Editing 101 WIP
    Post by: Elric on April 23, 2013, 06:26:59 pm
    Download a clean copy of the attack.out editor, and use a clean copy of the attack.out from a vanilla FFT image.
    also do not rename the attack.out file.

    If all of these conditions are met then you won't have any problem
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on April 24, 2013, 01:32:41 pm
    Quote from: Elric on April 23, 2013, 06:26:59 pm
    Download a clean copy of the attack.out editor, and use a clean copy of the attack.out from a vanilla FFT image.
    also do not rename the attack.out file.

    If all of these conditions are met then you won't have any problem


    Yes i did it !

    This is first step :D

    (http://i.imgur.com/mr2dKxv.png)

    Thanks Elric :)
    Title: Re: Event Editing 101 WIP
    Post by: Elric on April 24, 2013, 06:43:55 pm
    Good Job MasterGrand, glad you were able to get it working :D
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on April 24, 2013, 11:17:19 pm
    Hi Elric i wonder how use effect ?  Effect(xEFID,xID,XXX,YYY,x00) can you tell me what mean EFID..etc

    Thanks advance
    Title: Re: Event Editing 101 WIP
    Post by: Elric on April 24, 2013, 11:56:19 pm
    This is how effects work:
    EFID = Effect ID, you can find these in my effect videos on my Youtube channel
    the next byte (x15 in this example) is the Unit ID (,007,005) is the Unit X/Y Coordinates

    Then you need to put a EffectStart and Effect End after it.

    Use my Example below for this explanation

    Effect(xEFID,x15,007,005,x00)
    EffectStart()
    EffectEnd()
    Title: Re: Event Editing 101 WIP
    Post by: RavenOfRazgriz on April 25, 2013, 12:44:05 am
    To be more specific, EFID actually refers to the ABILITY ID of the skill that shares an animation with the Effect you want to use.

    This is why some skill slots in FFTP appear to be "empty" and have an effect such as Summon Demon - those abilities literally exist for the sole purpose of using the Summon Demon effect during an Event.  There are some Effects you can call by calling an Effect ID over 200 that  are set via hardcoded "abilities", mostly Zodiac Stone effects, Fort Zeakden explosions, etc.

    This is just something you need to be aware of if you're editing the Effects that play when you cast skills, so you can be sure you'll be calling the animation you want.
    Title: Re: Event Editing 101 WIP
    Post by: demitrius on June 22, 2013, 11:31:31 am
    I've recently started figuring out the basics of event editing and this has been a great resource.  I ran into a fairly major roadblock in trying to edit the Orbonne Prayer event and realized there's a small disconnect between the instructions listed for compiling the event and that actions needed to make it happen.

    Compiling the event never overwrote the event.  Instead, I had to click Save Event and place the event in the Custom Event Dictionary before compiling. I assume this is something germane to v1.91 of EESP.

    In any case, thanks for this leg up.  As I go through, I'll most likely make edits to my own personal documentation.  Did you have any plans of updating this document in the future?  If not, I don't mind doing it (since I'm going to anyway) and supply you with the finished documentation.  I do this kind of stuff for a living.
    Title: Re: Event Editing 101 WIP
    Post by: RavenOfRazgriz on June 22, 2013, 02:39:03 pm
    Quote from: demitrius on June 22, 2013, 11:31:31 amCompiling the event never overwrote the event.  Instead, I had to click Save Event and place the event in the Custom Event Dictionary before compiling. I assume this is something germane to v1.91 of EESP.


    Pressing Save Event has been required in every version of EVSP and I'm pretty sure it explicitly tells you this somewhere.  It might not.   It compiles an event.txt notepad file after putting your event through its error-checking system, not what's in your editing window.  This is meant to minimize errors based on illegal commands, etc.
    Title: Re: Event Editing 101 WIP
    Post by: Elric on June 28, 2013, 07:34:08 pm
    Quote from: demitrius on June 22, 2013, 11:31:31 am
    Did you have any plans of updating this document in the future?  If not, I don't mind doing it (since I'm going to anyway) and supply you with the finished documentation.  I do this kind of stuff for a living.


    I do have the plans to do so, I've just been busy with Jot5 and some IRL stuff. My main goal was to get the harder to explain stuff done first, so that people could actually make a sample event and play around a bit to get the hang of things.

    MY full intention is to make this more than a event editing tutorial, but also cover attack.out as well as worldmap. This will require
    Pride to make an appearance long enough for me to get his worldmap info though :P

    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on October 18, 2013, 03:28:08 pm
    Offset(x00014000)
    //Remove the previous line if you wish not to override the offset in CONFIG.INI.
    Text(x000000D3)
    //Remove the previous line if you wish text to compile directly after instructions.

    {7C}()
    ColorUnit(x00,x00,x04,-031,-031,+000,000)
    ColorField(x04,-031,-031,+000,000)
    Wait(00002)
    UnitAnim(x80,x00,x02,x00,x00)
    Camera(+00728,-00237,+01560,+00446,+04608,+00000,+04096,+00001)
    WaitForInstruction(x04,x00)
    {63}(rC9)
    {4D}(r3C)
    Camera(+00728,+00019,+00616,+00302,+04608,+00000,+04096,+00196)
    Wait(00030)
    ColorUnit(x00,x00,x04,+000,+000,+000,008)
    ColorField(x04,+000,+000,+000,008)
    WaitForInstruction(x04,x00)
    {66}()
    Wait(00030)
    DisplayMessage(x10,x70,x0001,x80,x00,x00,+00000,-00014,-00004,x01)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x70,x0002,x04,x00,x00,+00000,-00014,-00004,x01)
    WaitForInstruction(x01,x00)
    Wait(00016)
    March(x80,x00,000)
    Wait(00016)
    {1C}(r02)
    {1D}()
    Camera(+00504,+00019,+00840,+00510,+05120,+00000,+04096,+00064)
    Camera(+00504,+00019,+00841,+00301,+05637,+00000,+04096,+00128)
    {1E}()
    DarkScreen(x00,x01,012,064,x00,004)
    WaitForInstruction(x36,x00)
    DisplayConditions(x08,090)
    WaitForInstruction(x38,x00)
    WaitForInstruction(x04,x00)
    Camera(+00504,+00019,+00840,+00302,+05632,+00000,+04096,+00004)
    WaitForInstruction(x04,x00)
    DisplayConditions(x00,060)
    WaitForInstruction(x38,x00)
    RemoveDarkScreen()
    WaitForInstruction(x36,x00)
    {1C}(r01)
    EventEnd()

    //INSTRUCTION SECTION END -  TEXT START
    //Message x01
    {font:08}Thief{br}
    {font:00}What's this? Just a bunch{br}
    of kids! What luck!{br}
    OK, all we have to do{br}
    is kill these kids!{br}
    Then, we can escape!{br}
    Don't you worry!{br}
    We'll kill every one of you!{end}

    //Message x02
    {font:08}Delita{br}
    {font:00}How dare you slave bitch{br}
    You think you can defeat me!{br}
    I will show you no mercy!{end}

    //Message x03

    -----------------------------------------------------------------
    I add new message, but not start battle (freeze game)

    Please where is error !?
    Title: Re: Event Editing 101 WIP
    Post by: Elric on October 18, 2013, 08:39:29 pm
    Where does it freeze?

    Does it freeze before the new message or after?

    Remove the Text(x000000D3) and try to compile again, you need to remove the previous text offset when you edit an
    event, especially if you are adding commands.
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on October 22, 2013, 11:42:45 am
    Quote from: Elric on October 18, 2013, 08:39:29 pm
    Where does it freeze?

    Does it freeze before the new message or after?

    Remove the Text(x000000D3) and try to compile again, you need to remove the previous text offset when you edit an
    event, especially if you are adding commands.


    Please Elric give me code for new message in events .
    Title: Re: Event Editing 101 WIP
    Post by: Elric on October 22, 2013, 11:59:59 am
    You need to answer my question first...

    Does it freeze BEFORE or AFTER the Message???
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on October 22, 2013, 12:04:28 pm
    Sorry....
    After finish event
    Title: Re: Event Editing 101 WIP
    Post by: Elric on October 22, 2013, 08:07:34 pm
    Huh? You said the event was freezing though, how can you finish the event if it is freezing??
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on October 23, 2013, 11:41:24 am
    Quote from: Elric on October 22, 2013, 08:07:34 pm
    Huh? You said the event was freezing though, how can you finish the event if it is freezing??


    Please Elric copy event and see what is really problem .
    Title: Re: Event Editing 101 WIP
    Post by: Elric on October 23, 2013, 07:22:38 pm
    Okay, I will try it out either tonight or tomorrow after work and I'll let you know.

    However, I need to know what MAP you are using? Is it Gariland?

    You could just make me a .ppf of your fft iso that has the error? I could test it much faster that way
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on October 24, 2013, 11:37:39 am
    Quote from: Elric on October 23, 2013, 07:22:38 pm
    Okay, I will try it out either tonight or tomorrow after work and I'll let you know.

    However, I need to know what MAP you are using? Is it Gariland?

    You could just make me a .ppf of your fft iso that has the error? I could test it much faster that way


    Yes that is right Gariland.

    Sorry I don't know how use ppf :(
    Title: Re: Event Editing 101 WIP
    Post by: Elric on October 24, 2013, 12:54:44 pm
    http://ffhacktics.com/smf/index.php?topic=7457.0
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on October 24, 2013, 08:31:47 pm
    Thanks Elric

    I want Elric one favor,  can you give me all digits Inflict Statues

    00 Revive HP by 1
    01 Crystal
    02 Poison
    03 ????
    .....etc
    Title: Re: Event Editing 101 WIP
    Post by: Elric on October 24, 2013, 09:23:04 pm
    Unfortunately, those are all there is :/

    There is no way to do things like Transparent in an event.
    Title: Re: Event Editing 101 WIP
    Post by: MasterGrand on October 25, 2013, 07:20:52 am
    OK, how let enemy to join allies by event, i mean how change (Red to Blue) ?

    How let boss the target is end battle ?

    I need digits All effect

    Thanks advance Elric
    Title: Re: Event Editing 101 WIP
    Post by: Timbo on October 25, 2013, 09:30:21 pm
    Quote from: Elric on October 24, 2013, 09:23:04 pm
    Unfortunately, those are all there is :/

    There is no way to do things like Transparent in an event.

    Let me preface this query by saying that I know absolutely nothing about eventing I mostly just have some related questions. Why do event based characters like Malak and Alma have innate/starting statuses like Dead? Will flagging & unflagging these cause hiccups during the events they are used?

    Title: Re: Event Editing 101 WIP
    Post by: Jumza on October 25, 2013, 09:50:40 pm
    Nope, a unit that looks like it's dead in an event is made so by using a command. Removing or adding things such as Innate or Start: Dead won't effect it at all.
    Title: Re: Event Editing 101 WIP
    Post by: Timbo on October 25, 2013, 09:55:34 pm
    Thanks Jumza. I've been real curious about this for awhile.
    Title: Re: Event Editing 101 WIP
    Post by: Grand Angel on November 30, 2013, 11:31:36 pm
    Hello!  I am editing my first events today, I've been changing the dialogue in the first scene at Orbonne to match this script I found over at GameFAQS ( http://www.gamefaqs.com/ps/197339-final-fantasy-tactics/faqs/48627 ).

    Everything was going pretty good, until I hit a little snag.  There's one point in the script where Gafgarion's dialogue is completely skipped.  Here's the scene:

    (Original)
    Agrias: So there are rude knaves even among the Hokuten?

    Gafgarion: I'm being more than kind to the guard captains here.  Besides, we're mercenaries hired by the Hokuten.  I'm not obliged to show respect to you.

    Agrias: What?  How dare you!

    (My rewrite, exactly how it is in EasyEvent)

    //Message x09
    {font:08}Agrias{br}
    {font:00}It's a pity that the Aquilors do not{br}
    screen for manners in their men.{end}

    //Message x0A
    {font:08}Gafgarion{br}
    {font:00}I rather think that I'm showing more{br}
    than enough respect for some backwater{br}
    guard-captain.  Perhaps I should remind you{br}
    that we are but mercenaries hired by the Knights.{br}
    Believe it or not, my lady, our contract doesn't{br}
    demand good manners in your presence.{end}

    //Message x0B
    {font:08}Agrias{br}
    {font:00}What do you mean, you impertinent...!{end}

    Now, during my rewrite, after Agrias' line, Gafgarion's line is completely skipped (although he looks up from his "bow"), and it goes straight to Agrias saying her "What do you mean, you impertinent...!" line.  What did I do wrong?  Did I make Gaf's text too long?  (Please be easy on me, I'm a newbie at all this.)

    Title: Re: Event Editing 101 WIP
    Post by: Elric on December 01, 2013, 12:14:45 am
    Glad you are getting the hang of this, here is the problem:

    that we are but mercenaries hired by the Knights.{br}

    ^^This line is too long, shorten it a bit and you should'nt have anymore issues.
    Title: Re: Event Editing 101 WIP
    Post by: Grand Angel on December 01, 2013, 12:50:06 am
    Alrighty, I've shortened it, but I'm still having the problem.

    Here's the newly written script:

    //Message x0A
    {font:08}Gafgarion{br}
    {font:00}I rather think that I'm showing more{br}
    than enough respect for some backwater{br}
    guard-captain. Perhaps I should remind you{br}
    that we are but mercenaries hired by{br}
    the Knights. Believe it or not, my lady,{br}
    our contract doesn't demand good{br}
    manners in your presence.{end}

    Did I accidentally make another line too long?  Or does this have something to do with the ChangeDialog option (still a little confused about that one though)?
    Title: Re: Event Editing 101 WIP
    Post by: Elric on December 01, 2013, 02:32:37 am
    Courtesy of Raven, try this, if it's length related this'll fix it.
    If it's not, then post your event here in a spoiler so I can
    see the dialogue instructions.


    //Message x0A
    {font:08}Gafgarion{br}
    {font:00}
    I think I'm showing more than enough{br}
    respect for a backwater captain.{br}
    Perhaps I should remind you that{br}
    that we are but mercenaries hired{br}
    by the Knights{br}
    Believe it or not, my lady, our{br}
    contract doesn't demand good{br}
    manners in your presence.{end}

    Title: Re: Event Editing 101 WIP
    Post by: Grand Angel on December 01, 2013, 11:05:45 am
    Yep, that revision worked perfectly!  Gafgarion now says his lines without fail.

    Thank you!
    Title: Re: Event Editing 101 WIP
    Post by: Elric on December 01, 2013, 02:22:51 pm
    Anytime :)
    Title: Re: Event Editing 101 WIP
    Post by: Grand Angel on December 01, 2013, 06:08:02 pm
    Also, I have 1 last question.  My next text chance involves the infamously slow "little money" text.

    Here's the line:
    {delay:05}had no jobs{delay:19}, little money,{br}

    I'm guessing if I delete the {delay:19} it will scroll as fast as the other text?
    Title: Re: Event Editing 101 WIP
    Post by: Xifanie on December 01, 2013, 06:14:57 pm
    Yes, and technically, you wouldn't need the following delay to speed things up back again since the one before "had no jobs" will still be in effect.
    Title: Re: Event Editing 101 WIP
    Post by: Grand Angel on December 01, 2013, 06:29:24 pm
    Ahh I see, thank you!  Glad I can speed up that horribly slow text.

    I would also like to speed up the rest of the text as well, so I'm assuming changing the {delay} to 03 or 04 would speed up everything a bit.
    Title: Re: Event Editing 101 WIP
    Post by: Elric on December 01, 2013, 07:12:53 pm
    Correct
    Title: Re: Event Editing 101 WIP
    Post by: Grand Angel on December 01, 2013, 10:44:29 pm
    Ugh, sorry to pester you guys further, but I have yet run into another snag.

    After doing some text edits to more events, I went back to compile them, and got an error on one of them, specifically, the scene at Gariland Military Academy.

    When I try to compile it, I get an error that says "'$la' is not a valid integer value." Most of the time this causes EasyEvent to go into a "not responding" state.

    Also, if I try to save it I get another error, here's the summary of it:  "The process cannot access the file because it is being used by another process"

    Here's the event in question (edited), copied directly from EasyEvent:

    Offset(x00010000)
    //Remove the previous line if you wish not to override the offset in CONFIG.INI.
    //Remove the previous line if you wish text to compile directly after instructions.

    {7C}()
    LoadEVTCHR(x01,x02,x00)
    WaitForInstruction(x34,x00)
    SaveEVTCHR(x01)
    Camera(+00616,-00640,+00615,+00302,+03584,+00000,+04096,+00001)
    UnitAnim(x00,x00,x02,x00,x00)
    SpriteMove(x81,x00,+00002,-00001,-00010,x00,x01,+00001)
    WaitSpriteMove(x81,x00)
    SpriteMove(x85,x00,+00008,+00000,+00000,x00,x01,+00001)
    WaitSpriteMove(x85,x00)
    SpriteMove(x83,x00,+00004,+00000,-00014,x00,x01,+00001)
    WaitSpriteMove(x83,x00)
    {2C}(r81008400000200)
    {2C}(r80008500000200)
    RotateUnit(x04,x00,x08,x00,x02,000)
    WaitRotateUnit(x04,x00)
    RotateUnit(x01,x00,x04,x00,x01,000)
    WaitRotateUnit(x01,x00)
    UnitAnim(x01,x00,x58,x02,x00)
    UnitAnim(x83,x00,x5C,x02,x00)
    UnitAnim(x04,x00,x59,x02,x00)
    UnitAnim(x85,x00,x5E,x02,x00)
    Background(000,000,000,000,000,000,000,x00)
    Wait(00002)
    ColorField(x07,+004,+003,+001,000)
    ColorUnit(x00,x00,x07,+004,+002,-001,000)
    {63}(rC9)
    Camera(+00616,+00128,+00615,+00302,+03584,+00000,+04096,+00128)
    {4D}(r78)
    WaitForInstruction(x04,x00)
    Wait(00030)
    DisplayMessage(x10,x0B,x0001,x01,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    Wait(00060)
    ColorField(x07,+002,+001,-001,004)
    ColorUnit(x00,x00,x07,+002,+000,-003,004)
    ShowChapter(x01)
    WaitForInstruction(x3D,x00)
    WaitForInstruction(x3D,x00)
    ShowMapTitle(+000,+000,+001)
    BgSound(x0B,+000,+036,x3C,060)
    BgSound(x0C,+000,+040,x01,060)
    Wait(00060)
    ColorField(x08,+000,+000,+000,008)
    ColorUnit(x00,x00,x08,+000,+000,+000,008)
    Wait(00065)
    Focus(x81,x00,x81,x00,x00)
    Camera(+01536,+00008,+04096,+00302,+03584,+00000,+04096,+00140)
    WaitForInstruction(x04,x00)
    {1C}(r02)
    DisplayMessage(x10,x11,x0002,x81,x00,x00,+00000,+00002,+00012,x00)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x12,x0003,x84,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    {1C}(r01)
    Wait(00060)
    {6A}(r0B24143C3C)
    {6A}(r0C241C013C)
    Focus(x01,x00,x01,x00,x01)
    Camera(+04097,+12800,+00052,+00302,+03584,+00000,+04096,+00032)
    WaitForInstruction(x04,x00)
    {1C}(r02)
    DisplayMessage(x10,x91,x0004,x01,x00,x00,+00000,+00000,+00008,x00)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x92,x0005,x04,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    UnitAnim(x82,x00,x5B,x02,x00)
    BlockStart()
    Wait(00010)
    UnitAnim(x83,x00,x02,x00,x00)
    BlockEnd()
    ChangeDialog(x01,x0006,x00,x00)
    WaitForInstruction(x01,x00)
    Wait(00014)
    UnitAnim(x04,x00,x5A,x02,x00)
    Wait(00004)
    ChangeDialog(x02,x0007,x00,x00)
    WaitForInstruction(x01,x00)
    UnitAnim(x01,x00,x02,x00,x01)
    Wait(00004)
    ChangeDialog(x01,x0008,x00,x00)
    WaitForInstruction(x01,x00)
    ChangeDialog(x02,x0009,x00,x00)
    WaitForInstruction(x01,x00)
    BlockStart()
    Wait(00014)
    UnitAnim(x82,x00,x02,x00,x00)
    BlockEnd()
    ChangeDialog(x01,x000A,x00,x00)
    WaitForInstruction(x01,x00)
    WaitForInstruction(x08,x00)
    Wait(00014)
    UnitAnim(x04,x00,x59,x02,x00)
    BlockStart()
    Wait(00020)
    UnitAnim(x82,x00,x5B,x02,x00)
    BlockEnd()
    Wait(00004)
    ChangeDialog(x02,x000B,x00,x00)
    WaitForInstruction(x01,x00)
    WaitForInstruction(x08,x00)
    ChangeDialog(x01,x000C,x00,x00)
    WaitForInstruction(x01,x00)
    ChangeDialog(x02,xFFFF,x00,x00)
    Wait(00004)
    ChangeDialog(x01,xFFFF,x00,x00)
    Wait(00004)
    DisplayMessage(x10,x91,x000D,x01,x00,x09,+00070,+00062,+00015,x11)
    WaitForInstruction(x01,x00)
    ChangeDialog(x01,xFFFF,x00,x00)
    WaitForInstruction(x01,x00)
    {1C}(r01)
    {6A}(r0B14003C3C)
    {6A}(r0C1C00013C)
    Wait(00060)
    RotateUnit(x83,x00,x08,x00,x01,000)
    WaitRotateUnit(x83,x00)
    UnitAnim(x83,x00,x03,x00,x00)
    SpriteMove(x83,x00,+00000,+00000,+00000,x00,x01,+00030)
    WalkTo(x01,x00,002,004,x00,x00,+004,x01)
    WalkTo(x82,x00,002,005,x00,x00,+008,x01)
    RotateUnit(x84,x00,x08,x00,x00,000)
    Wait(00020)
    RotateUnit(x80,x00,x08,x00,x00,000)
    Wait(00010)
    RotateUnit(x81,x00,x08,x00,x01,000)
    RotateUnit(x85,x00,x08,x00,x01,000)
    SpriteMove(x85,x00,+00000,+00000,+00000,x00,x01,+00030)
    SpriteMove(x81,x00,+00000,+00000,+00000,x00,x01,+00030)
    WalkTo(x80,x00,004,004,x00,x00,+004,x01)
    UnitAnim(x83,x00,x02,x00,x00)
    WalkTo(x85,x00,005,004,x00,x00,+008,x01)
    WalkTo(x04,x00,001,004,x00,x00,+004,x01)
    WaitWalk(x82,x00)
    UnitAnim(x82,x00,x02,x00,x00)
    WaitWalk(x01,x00)
    {39}()
    WaitForInstruction(x0B,x00)
    UnitAnim(x80,x00,x02,x00,x00)
    UnitAnim(x01,x00,x02,x00,x00)
    UnitAnim(x04,x00,x02,x00,x00)
    UnitAnim(x85,x00,x02,x00,x00)
    UnitAnim(x00,x00,x02,x00,x00)
    WarpUnit(x86,x00,003,000,x00,x02)
    UnitPresent(x86,x00,x01)
    {48}()
    RotateUnit(x86,x00,x08,x00,x01,000)
    WaitRotateUnit(x86,x00)
    SpriteMove(x86,x00,+00000,+00000,-00034,x00,x01,+00001)
    WaitSpriteMove(x86,x00)
    Draw(x86,x00)
    SpriteMove(x86,x00,+00000,+00000,+00000,x00,x01,+00032)
    WaitSpriteMove(x86,x00)
    WalkTo(x86,x00,003,007,x00,x00,+008,x01)
    Wait(00048)
    Camera(+00504,+00115,+00728,+00382,+03584,+00000,+04096,+00096)
    WaitWalk(x86,x00)
    UnitAnim(x86,x00,x02,x00,x00)
    Wait(00030)
    Sound(x0041)
    RotateUnit(x86,x00,x00,x00,x01,000)
    WaitRotateUnit(x86,x00)
    Wait(00024)
    ZERO(x0057)
    ADD(x0057,x0000)
    BlockStart()
    {7E}(r57001C00)
    UnitAnim(x86,x00,x67,x02,x00)
    {7E}(r57009A00)
    UnitAnim(x86,x00,x02,x00,x00)
    Wait(00010)
    UnitAnim(x86,x00,x68,x02,x00)
    {7E}(r5700E200)
    UnitAnim(x86,x00,x02,x00,x00)
    BlockEnd()
    DisplayMessage(x10,x11,x000E,x86,x00,x00,+00000,+00000,+00000,x00)
    WaitForInstruction(x01,x00)
    UnitPresent(x87,x00,x01)
    {48}()
    WarpUnit(x87,x00,003,000,x00,x02)
    Draw(x87,x00)
    WalkTo(x87,x00,003,006,x00,x00,+012,x01)
    WaitWalk(x87,x00)
    UnitAnim(x87,x00,x02,x00,x00)
    Wait(00008)
    UnitAnim(x86,x00,x69,x02,x00)
    Wait(00030)
    SpriteMove(x87,x00,+00000,+00000,+00006,x02,x0A,+00024)
    UnitAnim(x87,x00,x5F,x02,x00)
    Wait(00008)
    UnitAnim(x87,x00,x60,x02,x00)
    Wait(00010)
    UnitAnim(x87,x00,x61,x02,x00)
    Wait(00010)
    UnitAnim(x87,x00,x62,x02,x00)
    Wait(00008)
    UnitAnim(x87,x00,x63,x02,x00)
    Wait(00008)
    UnitAnim(x87,x00,x64,x02,x00)
    Wait(00008)
    UnitAnim(x87,x00,x65,x02,x00)
    Wait(00008)
    UnitAnim(x87,x00,x66,x02,x00)
    Wait(00060)
    UnitAnim(x87,x00,x63,x02,x00)
    Wait(00008)
    UnitAnim(x87,x00,x62,x02,x00)
    Wait(00008)
    SpriteMove(x87,x00,+00000,+00000,+00000,x02,x0A,+00024)
    UnitAnim(x87,x00,x61,x02,x00)
    Wait(00008)
    UnitAnim(x87,x00,x60,x02,x00)
    Wait(00008)
    UnitAnim(x87,x00,x5F,x02,x00)
    Wait(00008)
    UnitAnim(x87,x00,x02,x00,x00)
    Wait(00010)
    RotateUnit(x87,x00,x00,x00,x01,000)
    WaitRotateUnit(x87,x00)
    BlockStart()
    WalkTo(x87,x00,003,000,x00,x00,+012,x00)
    WaitWalk(x87,x00)
    ColorUnit(x87,x00,x01,+000,+000,+000,001)
    SpriteMove(x87,x00,+00000,+00000,-00016,x00,x01,+00008)
    WaitSpriteMove(x87,x00)
    Erase(x87,x00)
    BlockEnd()
    Wait(00016)
    CallFunction(x01)
    Wait(00016)
    UnitAnim(x86,x00,x02,x00,x00)
    Wait(00016)
    UnitAnim(x86,x00,x6A,x02,x00)
    Wait(00004)
    UnitAnim(x86,x00,x6B,x02,x00)
    Wait(00006)
    UnitAnim(x86,x00,x6C,x02,x00)
    Wait(00012)
    UnitAnim(x86,x00,x6D,x02,x00)
    Wait(00020)
    ZERO(x0057)
    ADD(x0057,x0000)
    BlockStart()
    {7E}(r57009400)
    Sound(x0030)
    UnitAnim(x86,x00,x6E,x02,x00)
    Wait(00004)
    UnitAnim(x86,x00,x6F,x02,x00)
    Wait(00016)
    UnitAnim(x86,x00,x70,x02,x00)
    Wait(00002)
    UnitAnim(x86,x00,x71,x02,x00)
    Wait(00006)
    UnitAnim(x86,x00,x72,x02,x00)
    Wait(00008)
    UnitAnim(x86,x00,x73,x02,x00)
    Wait(00010)
    UnitAnim(x86,x00,x74,x02,x00)
    BlockEnd()
    DisplayMessage(x10,x91,x000F,x86,x00,x00,+00000,+00008,+00000,x01)
    WaitForInstruction(x01,x00)
    ChangeDialog(x01,xFFFF,x00,x00)
    Wait(00030)
    RotateUnit(x00,x00,x00,x00,x00,024)
    Wait(00024)
    ColorUnit(x00,x00,x00,-031,-031,+000,004)
    ColorField(x00,-031,-031,+000,004)
    Wait(00033)
    ColorUnit(x00,x00,x00,-031,-031,-031,004)
    ColorField(x00,-031,-031,-031,004)
    Wait(00033)
    {3E}(r02000000FFFFFF0A00)
    WaitForInstruction(x0C,x00)
    WaitForInstruction(x08,x00)
    ZERO(x0031)
    ADD(x0031,x0006)
    CallFunction(x06)
    EventEnd()

    //INSTRUCTION SECTION END -  TEXT START
    //Message x01
    {br}
    {delay:04}Born to the name Delita Hyral, Delita{br}
    the Hero{D11D}King made his first appearance in Ivalician{br}
    History a year prior to the outbreak of the Lion War.{delay:3C}.{delay:01}{br}
    {br}
    {br}
    {delay:04}Ivalice at the time had just seen the end{br}
    {delay:04}of the Fifty Years' War, when her armies had{br}
    {delay:04}finally returned home from the battlefields{br}
    {delay:04}found themselves without employment,{br}
    {delay:04}without money, and thus, for many, without loyalty{br}
    {delay:04}to the Crown.{delay:3C}.{br}
    {delay:04}In their discontent, many took to banditry{br}
    {delay:04}or plotting rebellion against the Royal Family.{br}
    {delay:04}This troubled era, when theft and murder{br}
    {delay:04}were commonplace, produced many of Ivalice's{br}
    {delay:04}most famous heroes and wizards.{delay:3C}{br}
    {delay:04}The city of Gariland was no exception to{br}
    {delay:04}the state of post{D11D}bellum Ivalice...{end}

    //Message x02
    {font:08}Cadet{br}
    {font:00}I heard another wagon bound{br}
    for Igros was attacked just last night.{end}

    //Message x03
    {font:08}Cadet{br}
    {font:00}I'd wager the Death Corps are responsible...{end}

    //Message x04
    {font:08}{Ramza}{br}
    {font:00}If so, I wonder why we've been summoned{br}
    today... Might you know, Delita?{end}

    //Message x05
    {font:08}Delita{br}
    {font:00}Nay, but I've heard some rumors...{br}
    I have a few thoughts.{end}

    //Message x06
    {font:08}{Ramza} {br}
    {font:00}Any that you're apt to share?{end}

    //Message x07
    {font:08}Delita{br}
    {font:00}Prince Larg's coming to Gariland.{end}

    //Message x08
    {font:08}{Ramza}{br}
    {font:00}Prince Larg? Why?{end}

    //Message x09
    {font:08}Delita{br}
    {font:00}Not only the Prince, but Marquis{br}
    Elmdor of Limberry, too.{end}

    //Message x0A
    {font:08}{Ramza}{br}
    {font:00}That's news indeed! Not an{br}
    official visit, is it?{end}

    //Message x0B
    {font:08}Delita{br}
    {font:00}I could not say... but as to our summons{br}
    today, dangerous places lie aplenty{br}
    in Ivalice.  As skilled and versatile in their{br}
    operations as the Knights of the Northern{br}
    Skies might be, they have a derth{br}
    in manpower.{end}

    //Message x0C
    {font:08}{Ramza}{br}
    {font:00}Thus they need us cadets.{end}

    //Message x0D
    {font:08}Shout{br}
    {font:00}Cadets, attention!{end}

    //Message x0E
    {font:08}Aquilor Knight{br}
    {font:00}Ladies and gentlemen, as you{br}
    are aware, in recent months{br}
    Gallionne has seen a surge in{br}
    criminal activity. Foremost amongst{br}
    our region's current problems are they{br}
    known as the Death Corps.{br}
    {br}
    {br}
    We have overlooked these traitorous{br}
    rebels for far too long; by royal{br}
    decree, we are now entering operations{br}
    to eradicate the Death Corps presence{br}
    in Gallionne and other provinces.{br}
    {br}
    This is a large scale military{br}
    operation; as Aquilor resources{br}
    are strained at the moment, we{br}
    will be collaborating with several{br}
    other groups, including the Royal{br}
    Guard in Igros under the command{br}
    of Prince Larg.{br}
    {br}
    {br}
    We also expect you, as cadets{br}
    to participate in logistical and combat{br}
    support.{br}
    As Igros castle will be undermanned{br}
    in days to come, cadets will be temporarily{br}
    assigned there for police and guard{br}
    duty.  Do you all understand?{end}

    //Message x0F
    {font:08}Aquilor Knight{br}
    {font:00}Cadets, you are to arm{br}
    yourselves immediately!{br}
    A group of rebels have been cut off{br}
    by Aquilor knights inside the city.{br}
    You are to infiltrate the streets and{br}
    halt the rebels before they escape{br}
    and re{D11D}establish contact with the{br}
    Death Corps.{br}
    Mobilize immediately! Dismissed!{end}

    //Message x10
    Title: Re: Event Editing 101 WIP
    Post by: Elric on December 02, 2013, 12:26:25 am
    This usually happens when you are missing something like a closing bracket, or have accidently removed an x where you shouldnt have like x01 changed to 01.
    There isn't really a good way to find it, unless you try to compile with EasyVent and it gives you the line number that has the conflict. Best way to find it other
    than that is by removing a bit of the event and keep doing so until it works, so you can narrow down where the issue is located.

    The reason that you get the second error is because the compiler is still trying to write, you need to go into your task manager and end process on Event_Compiler
    when this happens.
    Title: Re: Event Editing 101 WIP
    Post by: Grand Angel on December 02, 2013, 12:39:09 am
    Strange, when I went and tried to compile the original event to see if I would get the error, I still got the '$la is not a valid integer value' error, and I even got it when I went back and tried to compile edited events that I had successfully compiled.

    When the error pops up, another window comes up called "event_compiler_2," and it only has a button that says "Compile."  If I close it, another window comes up saying "Event Compiled successfully to Offset x00010000," and it will say that for every event.
    Title: Re: Event Editing 101 WIP
    Post by: IronArm on January 11, 2014, 07:23:28 am
    (Apologizes for the horrible grammar about to follow. I've been up a while now)

    Trying to work on my first event. I'm still learning the camera angles and I know that will just take some practice before I get those.

    The issue I'm having at the very beginning of the event. I have characters facing in random directions, some work just fine, and others are facing in odd directions.

    I have three characters in FFTPatcher facing to the West as their initial direction. All three of these characters are facing the correct direction in the event (1 Character has a focus camera script and dialogue and another just has dialogue).

    I have two characters set to facing South as their initial direction. One character faces the South and the other faces Southwest. In the script the character facing the Southwest is doing a UnitAnim and dialogue.

    I have three characters set to facing the North as their initial direction. One character is facing the correct direction and has dialogue in the event. The other two are facing to the East. One has dialogue and a rotation movement and the other has nothing.

    Once the character has a focus camera angle put on him and finishes speaking all the directions of the characters fix themselves. I can't figure out what is fixing the directions or what is causing it to go wrong.

    Here is what I am using. I'm aware its probably not great and the camera angle needs to be worked on. The camera I can fix by myself, so don't want to trouble anyone with it. The directional problems is what I am mostly concerned about. I can also provide some screenshots if needed.

    Offset(x00004000)
    UnitAnim(x05,x00,x22,x00,x00)
    UnitAnim(x01,x00,x01,x00,x00)
    UnitAnim(x02,x00,x01,x00,x00)
    UnitAnim(x03,x00,x01,x00,x00)
    UnitAnim(x04,x00,x01,x00,x00)
    UnitAnim(x06,x00,x01,x00,x00)
    UnitAnim(x07,x00,x01,x00,x00)
    UnitAnim(x08,x00,x01,x00,x00)
    UnitAnim(x09,x00,x01,x00,x00)
    UnitAnim(x10,x00,x01,x00,x00)
    UnitAnim(x11,x00,x01,x00,x00)


    {63}(rC9)
    Camera(+00560,-00384,-00112,+00341,+00000,+00000,+04096,+00001)
    {4D}(r78)
    Wait(00010)

    DisplayMessage(x10,x11,x0001,x06,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0002,x08,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0003,x05,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0004,x06,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0005,x05,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0006,x04,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0007,x08,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    Focus(x01,x00,x01,x00,x00)
    Camera(+00001,+01253,+04352,+00302,+00512,+00000,+04096,+00032)
    WaitForInstruction(x04,x00)
    DisplayMessage(x10,x11,x0008,x01,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0009,x03,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    Focus(x06,x00,x06,x00,x00)
    Camera(+00001,+01253,+04352,+00302,+00512,+00000,+04096,+00032)
    WaitForInstruction(x04,x00)
    RotateUnit(x06,x00,x0B,x00,x00,000)
    WaitRotateUnit(x06,x00)
    DisplayMessage(x10,x11,x0000A,x06,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    Wait(00010)

    EventEnd()

    //INSTRUCTION SECTION END -  TEXT START

    //Message x01
    {font:08}Rogue Thief{br}
    {font:00}Come now. If you just hand over the{br}
    gil, we'd be on our way.{end}

    //Message x02
    {font:08}Rogue Squire{br}
    {font:00}Pray we don't decide to{br}
    to take more.{end}

    //Message x03
    {font:08}Rachael{br}
    {font:00}Take another step forward and{br}
    pray I don't drive my blade{br}
    into you!{end}

    //Message x04
    {font:08}Rogue Thief{br}
    {font:00}Watch it. Pretty girls like yourself{br}
    shouldn't be using harsh words.{end}

    //Message x05
    {font:08}Rachael{br}
    {font:00}It isn't my words you should be{br}
    worrying about.{end}

    //Message x06
    {font:08}Cadmon{br}
    {font:00}Lady Rachael, just give them the{br}
    gil and let them be on their way.{end}

    //Message x07
    {font:08}Rogue Squire{br}
    {font:00}Listen to the little lad. Just give{br}
    us the gil.{end}

    //Message x08
    {font:08}Godfrey{br}
    {font:00}We have to help them!{end}

    //Message x09
    {font:08}Fois{br}
    {font:00}Maybe they are just trying to give{br}
    clothing advice? Look at the{br}
    hat he is wearing...{end}

    //Message x0A
    {font:08}Rogue Thief{br}
    {font:00}Looks like we have heroes coming to{br}
    save the day. Let's show them what{br}
    happens to heroes in Dorter!{end}
    Title: Re: Event Editing 101 WIP
    Post by: Jumza on January 11, 2014, 09:19:47 am
    It would be nice if you could specify the unit ID's of the characters having problems, and have one or two screenshots as well. Then I can find the problem for you.
    Title: Re: Event Editing 101 WIP
    Post by: IronArm on January 11, 2014, 10:49:15 pm
    Unit ID: 5
    Facing Southwest, but suppose to be facing South

    Unit ID: 6
    Facing East, but suppose to be facing North

    Unit ID: 7
    Facing East, but suppose to be facing North.

    Starting screenshot: (Unit ID: 7 is covered up by text, this will be fixed when I adjust the camera angle)
    (http://i17.photobucket.com/albums/b93/JTpic/ePSXe2014-01-1121-40-06-80_zpse764a7d2.png) (http://s17.photobucket.com/user/JTpic/media/ePSXe2014-01-1121-40-06-80_zpse764a7d2.png.html)


    After camera focuses on Unit ID: 1 and the sprites correct themselves:
    (http://i17.photobucket.com/albums/b93/JTpic/ePSXe2014-01-1121-40-32-46_zps010bc19a.png) (http://s17.photobucket.com/user/JTpic/media/ePSXe2014-01-1121-40-32-46_zps010bc19a.png.html)


    The second screenshot is what they are suppose to be doing from the very beginning.
    Title: Re: Event Editing 101 WIP
    Post by: Elric on January 11, 2014, 11:09:02 pm
    I can tell you right now, that part of your Camera command is derpy. Which
    is causing this.

    If you look in the camera portion of the tutorial, it shows very clearly which
    camera MAPRT are okay to use, you have the map looking like a square in
    screenshot 1, the sprites are not made to be displayed correctly this way, which
    will cause you this kind of issue. The map should look more like a Diamond Shape,
    as you do in screenshot 2. Look at  the 4 angles in EVSP for that map, it is not a
    particularly easy map to work with, but straying outside of:

    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.

    is not really an option if you want the event to look and play correctly.

    Camera(+00560,-00384,-00112,+00341,+00000,+00000,+04096,+00001)
    The +00000 in bold cannot be +00000 if you expect the event to look
    right.
    Title: Re: Event Editing 101 WIP
    Post by: IronArm on January 11, 2014, 11:41:50 pm
    Okay thank you. I knew the camera angle was not right, but I didn't know if that was what was causing the angle of the sprites to go crazy or not. Thank you

    EDIT:
    Fixed camera angle to now have proper MAPRT, now Unit ID: 6,7, and 8 are having the error.

    (http://i17.photobucket.com/albums/b93/JTpic/ePSXe2014-01-1123-10-31-29_zps72600731.png) (http://s17.photobucket.com/user/JTpic/media/ePSXe2014-01-1123-10-31-29_zps72600731.png.html)


    It did fix Unit 5
    Title: Re: Event Editing 101 WIP
    Post by: Elric on January 12, 2014, 12:36:25 am
    I can only think of 2 other causes,

    1) Either its a problem with the Initial direction in FFTPatcher

    or

    2) Try this,

    REPLACE THIS:

    UnitAnim(x05,x00,x22,x00,x00)
    UnitAnim(x01,x00,x01,x00,x00)
    UnitAnim(x02,x00,x01,x00,x00)
    UnitAnim(x03,x00,x01,x00,x00)
    UnitAnim(x04,x00,x01,x00,x00)
    UnitAnim(x06,x00,x01,x00,x00)
    UnitAnim(x07,x00,x01,x00,x00)
    UnitAnim(x08,x00,x01,x00,x00)
    UnitAnim(x09,x00,x01,x00,x00)
    UnitAnim(x10,x00,x01,x00,x00)
    UnitAnim(x11,x00,x01,x00,x00)

    WITH THIS:

    UnitAnim(x00,x00,x02,x00,x00)
    Wait(00005)
    UnitAnim(x05,x00,x22,x00,x00)

    Lemme know how it goes, x01 supposedly works the same as x02, but I rarely ever see it used in vanilla.
    Plus, UnitAnim(x00,x00,x02,x00,x00) will stop ALL units, you don't need to do them one at a time, then
    you give it a small wait so that the following animation for Unit 05 isn't effected by the above animation
    happening at the same time.

    Remember, work smarter, not harder :P
    Title: Re: Event Editing 101 WIP
    Post by: IronArm on January 12, 2014, 12:45:39 am
    The second option fixed it  :lol:

    I tend to do stuff like that quite often.

    Now I just need it to run the battle at the end. Would editing an event that already has a battle at the end of the event would be the easiest thing to do, or should I try to put that in myself?

    Thanks again for all the help. I'm hoping once I get finished with a few of my other sprites and get 2-3 more events in place, I will be able to put a video demo together for my patch.
    Title: Re: Event Editing 101 WIP
    Post by: Elric on January 12, 2014, 01:13:03 am
    Yeah if it's a event that would normally be a battle then it will work, but youll need to put in the portion that displays the battle conditions and such if you want it to work right.

    If you are trying to link it together without a formation screen, set the formation to blank in attack.out GUI for those scenes so it won't call formation before the battle starts.
    Title: Re: Event Editing 101 WIP
    Post by: IronArm on January 12, 2014, 03:52:33 am
    I apologize for being so bad with these event edits. I have been at it for hours trying to figure out what I'm doing wrong, but just can't seem to get things to work right. I'll fix one issue to have another come up.

    Editing Event:
    Offset(x00008000)
    UnitAnim(x00,x00,x02,x00,x00)
    Wait(00005)
    UnitAnim(x05,x00,x22,x00,x00)
    AddUnitPrep()
    UnitPresent(x83,x00,x01)
    AddUnitStart()

    {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(-00392,-00384,+00392,+00341,-00512,+00000,+04096,+00001)

    Wait(00010)

    DisplayMessage(x10,x11,x0001,x06,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0002,x07,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0003,x05,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0004,x06,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0005,x05,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0006,x04,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0007,x07,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0008,x05,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    Focus(x01,x00,x01,x00,x00)
    Camera(+00001,+01253,+04352,+00302,+00512,+00000,+04096,+00032)
    WaitForInstruction(x04,x00)DisplayMessage(x10,x11,x0009,x01,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x000A,x02,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x000B,x03,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    WalkTo(x01,x00,004,008,x00,x00,+008,x01)
    WalkTo(x02,x00,006,009,x00,x00,+008,x01)
    WalkTo(x03,x00,006,008,x00,x00,+008,x01)
    WaitWalk(x03,x00)
    UnitAnim(x00,x00,x02,x00,x00)
    WaitForInstruction(x01,x00)
    Focus(x06,x00,x06,x00,x00)
    Camera(+00001,+01253,+04352,+00302,+00512,+00000,+04096,+00032)
    WaitForInstruction(x04,x00)
    RotateUnit(x06,x00,x0B,x00,x00,000)
    WaitRotateUnit(x06,x00)
    DisplayMessage(x10,x11,x0000C,x06,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0000D,x01,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    DisplayMessage(x10,x11,x0000E,x03,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)
    {60}(r003C)
    Wait(00025)
    March(x00,x00,002)
    {1C}(r02)
    DarkScreen(x00,x01,012,064,x00,004)
    WaitForInstruction(x36,x00)
    DisplayConditions(x08,060)
    WaitForInstruction(x38,x00)
    DisplayConditions(x00,060)
    WaitForInstruction(x38,x00)
    RemoveDarkScreen()
    WaitForInstruction(x36,x00)
    {1C}(r02)
    EventEnd()


    My problems:
    UnitAnim(x00,x00,x02,x00,x00)
    WaitForInstruction(x01,x00)


    Is not working after the walking command. The units that partake in the walking animation, never stand still.

    Focus(x01,x00,x01,x00,x00)
    Camera(+00001,+01253,+04352,+00302,+00512,+00000,+04096,+00032)


    Its no longer switching and focusing on unit 01. I've tried several different camera angles. The current one is just the default one from the guide that is working for the other focus commands, but not this one.

    {60}(r003C)
    Wait(00025)
    March(x00,x00,002)
    {1C}(r02)
    DarkScreen(x00,x01,012,064,x00,004)
    WaitForInstruction(x36,x00)
    DisplayConditions(x08,060)
    WaitForInstruction(x38,x00)
    DisplayConditions(x00,060)
    WaitForInstruction(x38,x00)
    RemoveDarkScreen()
    WaitForInstruction(x36,x00)
    {1C}(r02)
    EventEnd()


    and

    UnitAnim(x00,x00,x02,x00,x00)
    Wait(00005)
    UnitAnim(x05,x00,x22,x00,x00)
    AddUnitPrep()
    UnitPresent(x83,x00,x01)
    AddUnitStart()


    Were both in the event I'm trying to edit for the battle (Orbonne Battle/ENTD 183). Battle screen appears says ready and after about 1-2 seconds it just goes to the next event instead of a battle.

    Like I mentioned above, apologize for apparently being so bad at this. I have been trying for a few hours now and wouldn't ask for any help unless I was stuck. If I need to stop asking for help on this section of the forum, I will gladly move it if necessary.
    Title: Re: Event Editing 101 WIP
    Post by: Elric on January 12, 2014, 06:34:47 am
    Try this and see what results you get, if it fixes certain parts, look at how what I did differs from what you have,
    this is a good way to learn. I can elaborate more on this in the morning if need be.

    Offset(x00008000)
    UnitAnim(x00,x00,x02,x00,x00)
    Wait(00005)
    UnitAnim(x05,x00,x22,x00,x00)

    AddUnitPrep()
    UnitPresent(x83,x00,x01)
    AddUnitStart()

    {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(-00392,-00384,+00392,+00341,-00512,+00000,+04096,+00001)

    Wait(00010)

    DisplayMessage(x10,x11,x0001,x06,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x0002,x07,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x0003,x05,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x0004,x06,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x0005,x05,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x0006,x04,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x0007,x07,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x0008,x05,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    Focus(x01,x00,x01,x00,x00)
    Camera(+00001,+01253,+04352,+00302,+00512,+00000,+04096,+00032)
    WaitForInstruction(x04,x00)

    DisplayMessage(x10,x11,x0009,x01,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x000A,x02,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x000B,x03,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    BlockStart()
    WalkTo(x01,x00,004,008,x00,x00,+008,x01)
    WaitWalk(x01x00)
    UnitAnim(x01,x00,x02,x00,x00)
    BlockEnd()

    BlockStart()
    WalkTo(x02,x00,006,009,x00,x00,+008,x01)
    WaitWalk(x02,x00)
    UnitAnim(x02,x00,x02,x00,x00)
    BlockEnd()

    WalkTo(x03,x00,006,008,x00,x00,+008,x01)
    WaitWalk(x03,x00)
    UnitAnim(x03,x00,x02,x00,x00)

    Focus(x06,x00,x06,x00,x00)
    Camera(+00001,+01253,+04352,+00302,+00512,+00000,+04096,+00032)
    WaitForInstruction(x04,x00)

    RotateUnit(x06,x00,x0B,x00,x00,000)
    WaitRotateUnit(x06,x00)

    DisplayMessage(x10,x11,x0000C,x06,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x0000D,x01,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x11,x0000E,x03,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    {4D}(r40)
    Wait(00030)
    Wait(00016)
    Wait(00016)
    {1C}(r02)
    {1D}()
    {1E}()
    DarkScreen(x00,x01,012,064,x00,004)
    WaitForInstruction(x36,x00)
    DisplayConditions(x08,090)
    WaitForInstruction(x38,x00)
    Camera(+00000,-00000,+01500,+00302,+00512,+00000,+04096,+00001)
    WaitForInstruction(x04,x00)
    DisplayConditions(x00,060)
    WaitForInstruction(x38,x00)
    RemoveDarkScreen()
    WaitForInstruction(x36,x00)
    {1C}(r01)
    March(x00,x00,000)
    {63}(rA8)
    EventEnd()
    Title: Re: Event Editing 101 WIP
    Post by: IronArm on January 12, 2014, 08:37:27 am
    Elric,

    It did fix the camera issues I was having, but the battle still won't start. About a second after the "Ready" screen goes away it ends and takes you to the next event (which in this case is the battle outside the Orbonne Church).

    Thank you for fixing the camera issues.
    Title: Re: Event Editing 101 WIP
    Post by: Elric on January 12, 2014, 12:50:28 pm
    One issue at a time buddy :P

    Do you have mIRC? Or can you go onto #FFH from the mibbit link there on the site?

    Just for shits and Giggles, do this, give your event an offset of Offset(x0003E000) and
    reimport it.

    Then go into the Attack.out GUI click on 001, set after event do GO TO NEXT SCENARIO,
    Next Scen. 021.

    now go down to 020, 021, and 022 and change the ENTD and map to the ones you are currently
    trying to use for a battle. Now reimport the attack.out as well and see what happens.

    Essentially, what I'm having you do, is jump right from the end of the first event into the slot with
    the Sweegy Woods battle. Sweegy Woods has no event conditions, where as the first battle at
    Orbonne does.

    You will not have units to place other than Ramza or whatever you put into your ENTD, but if this
    works all right then we can pinpoint the problem easier. However if this does not work, I'll
    need a copy of your ATTACK.OUT and TEST.EVT
    Title: Re: Event Editing 101
    Post by: Elric on January 26, 2014, 02:51:09 am
    A bit of an update to the OP, much of my old outline has changed due to Xifanie
    documenting nearly everything about every event command there is on the Wiki.

    The OP will receive another update soon to update all my old info to the new
    commands and config.ini
    Title: Re: Event Editing 101
    Post by: Jumza on January 28, 2014, 03:15:04 pm
    I mentioned this idea to Elric earlier but I'm probably going to do it soon so, I'll be doing a video showing off all the new instructions, possibly explaining some of the changes and hopefully clearing up the ones that are a little hard to understand (Like that GhostUnit stuff).

    I will not be explaining {A0}LTE and anything after that. That stuff involves variables which are an important part of event editing, but I really don't want to have to explain it in a video (feel free to come to the help section and ask if you'd like to know though!), it also has some new commands that can be used to create loops in events which (I hope) someone else will make a tutorial for soon, because I forgot to bookmark Xifanie's explanation for it.

    Anyway I hope to get this done soon ;)
    Title: Re: Event / Worldmap Editing 101
    Post by: Elric on January 28, 2014, 10:57:53 pm
    This is a good idea Jumza, I'll likely help out with this once you start doing so.

    Also, another Update to the OP and Thread name. I added a portion written by
    Raven and dummy-de-translated by myself to the OP, this will cover how
    worldmap flow works.
    Title: Re: Event / Worldmap Editing 101
    Post by: Pride on January 29, 2014, 02:01:04 pm
    03 is less then for the world map part.
    Title: Re: Event / Worldmap Editing 101
    Post by: Elric on January 29, 2014, 02:08:20 pm
    Thanks Pride, I'll update that once I get home from work.

    EDIT: OP UPDATED with this info
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Elric on March 02, 2014, 06:16:57 pm
    Another Update to the OP.

    -Tutorial on editing BONUS.BIN has been added (Thank you Xifanie and Choto)
    -This tutorial requires you to use TIMUTIL.EXE for the time being, until it is known whether or not TIMTOOL.EXE will work for this.

    -Tutorial name changed

    Soon to come Updates:
    -The rest of the updates to the eventing section
    -Zodiac.bin editing Tutorial
    -Bravestory editing Tutorial
    -Map editing Tutorial
    -Other stuff I forgot as soon as I started writing this
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: JoanManuel on August 01, 2014, 01:44:19 am
    Hello everyone. I followed step by step all the instructions are in this tutorial, so the beginning of the game is on the map tutorial 1. But I have a problem, when editing the test event, I put exactly what is in the tutorial and character not only does not stand still(like the animation 02 should do), but also, he do not walk. Instead of doing so(all the moves), I think it jumps all and go to the message section and after that, the event ends.
    Now ill leave what I have at the event:
    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}

    Thank you very much for the help
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Elric on August 01, 2014, 02:42:29 am
    Did you make sure to edit the ENTD to add Ramza with unit ID 01?

    Also your walk commands are wrong. Like 001.007 should be 001,007
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: JoanManuel on August 01, 2014, 01:17:47 pm
    No, my bad. I confused "unit id" with "unit target id". Sorry. Thank You for the advaice :P

    Excuse my English xD
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Choto on August 04, 2014, 09:03:22 pm
    So I think to convert .bmp's to .tim's, TimTool.exe will work as a substitute for timutil.exe for all the Windows 7 people.

    1. Open Program
    2. Go to File-->Import Image File
    3. Select your image but don't click ok yet.
    4. Check the .tim properties on the right hand side. Make sure you set the color depth to whatever you want.
    5. Check "Set for black" under the transparency options.
    6. Click "Ok" and a .tim will be created in the same directory as the .bmp

    Happy days are here again!
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Boco on November 14, 2014, 05:35:26 pm
    Thanks Elric and everyone involved for this tutorial. I finished section 1! Ramza walked in place on a weird chessboard map I've never even seen before! Then it went to the battle outside the church.

    I'm looking forward to delving even deeper into this interesting subject.
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Elric on November 14, 2014, 06:07:35 pm
    No problem, you've already made it further than most people who attempt it.
    If you have any questions, don't hesitate to ask or come on IRC
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Boco on November 28, 2014, 08:00:07 pm
    I went ahead and tried to do this tutorial again to try and let the knowledge sink in through repetition. I'm trying to simplify the process down in my mind and it comes down to this:

    1. Edit ATTACKOUT file to change the map for a certain event, SAVE
    2. Use Raven's EasyVent to edit the commands for an event, COPY/PASTE into event.txt and Run Compiler to get new TEST.EVT
    3. Use FFTPatcher to edit the ENTD for the available units and their starting positions for an event, Patch ISO
    4. Import new ATTACKOUT and TEST.EVT into patched ISO

    This second time I did the tutorial, I changed the map to Orbonne Monastery instead of the Tutorial Map, and I had Ramza facing south at the coordinates X=6, Y=6. The event essentially played the same, except the camera couldn't quite fit the whole level in it and had cut off part of Ramza's head. I guess I could use this tutorial to edit any of the events the same way.

    Overall, I think I have the process down, now I just need to learn all the commands.
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Elric on November 28, 2014, 09:16:21 pm
    Fantastic! We need more eventers in a bad way.

    And correct, you can edit any event this way.

    Once you have the process down pat, you will need to download the new CONFIG.INI and then refer to the Wiki for all the new commands not current in EVSP (you can use them without the newest CONFIG.INI and some of your old ones have changed format, so you cant just mix/match)

    I usually try to get people to get the new config.ini right away, but due to how easy it is to learn the eventing process with EVSP and my tutorial, I currently recommend practicing with EVSP for a little bit first, before switching over and learning to save state event and all the new fancy commands and such. I've found that trying to learn the eventing process plus the new stuff at the same time can be fairly overwhelming for newcomers and generally makes them run away scared.

    If you have any questions, don't hesitate to post in this section.

    (Raven is working on (sort of) the new EVSP, so once that's out, this tutorial will be remade)
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Boco on November 29, 2014, 05:35:37 pm
    Oh, yeah, I have a question. I'm not a programmer, so this might sound stupid, but does the event compiler have the capability of writing to different offsets at once? Like the Orbonne Prayer is Offset(x00004000) and the Orbonne Battle is Offset(x00008000), can I put both of those into the text file to compile into events at once, or is it a one-by-one process of compile, import, compile, import, etc.? Or can I just write new instructions to every event in the game by compiling it all from one text file? Oh and thanks Xifanie and anyone involved in making the tool!
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Elric on November 29, 2014, 07:16:25 pm
    It needs to be done one at a time. I've never seen it done any other way. The PSXEvents.txt does hold all the scripts, but we don't really work with that anymore.

    I've always found it as a good thing that they are separate as well, makes it much easier to bugtest when things go wrong :P

    Each event (and setup) uses 2000, meaning they will all increase by 2000.

    (also remember to always remove the TEXT offset from events, but never the Offset)

    Protip: I'm not a programmer either ;)   I'm just a eventer :P
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Guru on January 16, 2016, 04:50:15 am
    Thanks guy's all these tutorials are awesome! I couldn't get the attack.out editor in the op to work. Kept saying something along the lines of invalid file name. Once I downloaded the one off the main page it worked right away.
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Guru on January 17, 2016, 12:44:09 am
    Sorry ik, double posting and all  :mad:

    Got first event done though!! Followed tutorial but went off be beaten path a lil bit though. Used old config for this event, gonna start using new one now. This reminds me a lot of javascript so it pretty much makes sense to me, just gotta get the commands down.

    Only question I have so far is about the EVTCHR. I'm assuming there is quite a bit to it because you skipped it in tutorial...So how bout just an example of what I would use it for?

    Here's my event...pretty basic but feel free to give advice!
    Offset(x00004000)
    //Remove the previous line if you wish not to override the offset in CONFIG.INI.

    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)

    DisplayMessage(x10,x11,x0001,x01,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    WalkTo(x01,x00,001,007,x00,x00,+032,x01)
    WaitWalk(x01,x00)

    WalkTo(x01,x00,005,007,x00,x00,+032,x01)
    WaitWalk(x01,x00)

    WalkTo(x01,x00,005,003,x00,x00,+032,x01)
    WaitWalk(x01,x00)

    WalkTo(x01,x00,001,003,x00,x00,+032,x01)
    WaitWalk(x01,x00)

    WalkTo(x01,x00,001,005,x00,x00,+032,x01)
    WaitWalk(x01,x00)

    RotateUnit(x01,x00,x0B,x00,x00,000)
    WaitRotateUnit(x01,x00)

    UnitAnim(x01,x00,x1C,x00,x00)

    Wait(00050)

    AddUnitPrep()
    UnitPresent(x17,x00,x00)
    AddUnitStart()
    AddUnitEnd()

    UnitAnim(x17,x00,x3C,x00,x00)

    UnitAnim(x01,x00,x1E,x00,x00)

    Wait(00250)

    DisplayMessage(x10,x11,x0002,x01,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    DisplayMessage(x10,x12,x0003,x17,x00,x00,+00000,+00000,+00000,x03)
    WaitForInstruction(x01,x00)

    UnitAnim(x17,x00,x5C,x00,x00)

    Effect(x00A5,x01,001,005,x00)
    EffectStart()
    EffectEnd()

    Wait(00025)

    UnitAnim(x01,x00,x19,x00,x00)

    Wait(00085)

    UnitAnim(x01,x00,x34,x00,x00)

    Wait(00100)

    Camera(+00560,-00048,+00560,+00302,+03584,+00000,+04096,+00128)

    UnitAnim(x17,x00,x29,x00,x00)

    Wait(00300)
    EventEnd()

    //instruction section end - text start
    //message x01
    {font:08}{Ramza}{br}
    {font:00}Hey! My first super awesome event!{br}{br}
    Now watch me walk!{end}

    //message x02
    {font:08}{Ramza}{br}
    {font:00}Uhh... Oh shit I thought{br}
    you were dead!{end}

    //message x03
    {font:08}Gaffman{br}
    {font:00}Ha you should've checked{br}your work {Ramza}!{end}
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Arimala on November 17, 2016, 02:32:43 am
    Hello, I was looking into editing the winning conditions of the last few battles so I have to kill everything not just a single shrine knight. I just downloaded graphicsgale for the first time and I can't seem to get passed this part: "7) Import the first palette from the 8bit original BMP and black for everything else. Make sure the "Match Pixels with Colors" box is checked."  I am assuming that picture that doesn't load in the example drop box was supposed to help   :cry:

    I see three import options, 2 under file and 1 under edit...I tried all 3  :lol:, opening the original 8-bit through those but then I get lost... Not sure what "black for everything else" means.

    Those ending battles need some spice in my vanilla-ish patch, any help would be much appreciated.

    edit: and thank you for the awesome event tutorial that helped out a ton

    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Nyzer on November 17, 2016, 04:50:13 am
    Here's how you can import a palette.
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Arimala on November 17, 2016, 08:15:55 am
    Thanks for the quick response. Now I am stuck on:
    11) Open the BMP in TIMUTIL.EXE
    12) Convert to a 4bit TIM with translucent all but black & transparent black
    13) Start "Bonus Bin Utility.exe", Select your BONUS.BIN file (must be extracted from you ISO), Then select your .TIM file, and hit save.
    14) Import BONUS.BIN and enjoy!

    I have windows 7 so I used timtool like choto said on page 6 i think it was, converted a file no problem.. after that I extracted the bonus.bin file from cdmage, but nothing happens when I hit open bonus.bin. It just acts like something happened .. I thought that was normal so I tried importing the .tim but I just get this error "error: Could not read file from disk. Original Error: Index was outside the bounds of the array"
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Xifanie on November 17, 2016, 08:45:38 am
    You should be able to just use the latest shishi for this... it has every BONUS.BIN conditions on their own that you can individually extract and reimport.

    https://github.com/Glain/FFTPatcher/releases/tag/v0.491
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: Arimala on November 17, 2016, 11:19:58 am
    Edit: Ok so this was just for editing the IMAGES of the winning conditions and not actually editing the winning conditions themselves, which I would have to do through the attack.out, xml editing, and changing all the display conditions for each event. Unless I am just completely mixed up, but it doesn't seem changing some images would do what I am looking to do..
    Title: Re: How to make a Story Mod (WIP Tutorial)
    Post by: DarthFutuza on November 26, 2019, 02:15:35 pm
    @Elric  I wrote a partial brave story editing tutorial (http://ffhacktics.com/smf/index.php?topic=12338.0), if you want to add it/use it/correct it as part of your tutorials here.  There's probably some mistakes in it, and I didn't cover anything except for a very brief part of it (don't cover treasure, scenes, etc.) but you're welcome to use it if you think it'll help with that Brave Story tutorial that's coming soon™ :P  Also if anyone else see's any issues, let me know and I'll edit/fix it.