• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
June 16, 2024, 06:57:04 am

News:

Don't be hasty to start your own mod; all our FFT modding projects are greatly understaffed! Find out how you can help in the Recruitment section or our Discord!


Help with event editing

Started by Zafire, September 08, 2011, 09:28:54 am

Zafire

I've really tried to avoid posting. I usually found most of my information from older posts or stickies. I can do most of the basic stuff (everything with FFTpatcher, battle/world map spriting, changing what weapons look like in battle, etc). However i'm working on event editing now and I can't figure this out.

OK - I'm trying to edit the Sweegy Woods conversation. It looks like this (Sorry for the block of text)

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

WarpUnit(x80,x00,010,009,x00,x01)
WarpUnit(x82,x00,009,004,x00,x01)
WarpUnit(x83,x00,010,003,x00,x01)
Camera(+00728,-00636,+00584,+00622,+04752,+00000,+02592,+00001)
WaitForInstruction(x04,x00)
UnitAnim(x00,x01,x02,x00,x00)
{63}(rC9)
Camera(+00280,-00028,+00616,+00302,+02560,+00000,+04096,+00330)
{4D}(r3C)
WaitForInstruction(x04,x00)
Wait(00060)
DisplayMessage(x10,x92,x0001,x07,x00,x00,+00000,+00000,+00000,x00)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x91,x0002,x04,x00,x00,+00000,+00004,+00000,x03)
WaitForInstruction(x01,x00)
CloseDialog(x02,x0003,x00,x00)
WaitForInstruction(x01,x00)
CloseDialog(x01,xFFFF,x00,x00)
Wait(00008)
CloseDialog(x02,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00010)
{63}(rAA)
Wait(00010)
Focus(x81,x00,x81,x00,x01)
{38}(r1400)
Camera(+01832,+01024,+00258,+00302,+02560,+00000,+04096,+00020)
WaitForInstruction(x04,x00)
Wait(00020)
WalkTo(x83,x00,009,003,x00,x00,+005,x01)
Wait(00010)
WalkTo(x82,x00,008,004,x00,x00,+004,x01)
Wait(00010)
WalkTo(x80,x00,009,009,x00,x00,+006,x01)
Wait(00040)
Focus(x01,x00,x01,x00,x01)
{38}(r1400)
Camera(+00000,+02801,+11520,+00302,+02560,+00000,+04096,+00020)
WaitForInstruction(x04,x00)
DisplayMessage(x10,x70,x0004,x01,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
Wait(00016)
RotateUnit(x00,x00,x14,x00,x01,006)
{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}(r01)
March(x00,x01,008)
Wait(00016)
EventEnd()
------------------------------------------

OK, now what i'm trying to do is simply insert another message (It normally only has 5, I want 6). I CAN make it do that, however, after the blackscreen comes up and the "Battle conditions defeat all enemies READY!" appears, it doesn't unload the blackscreen. I have no idea why it freezes the event. I've tried to do just about everything to make it work. I tinkered with it for about three hours last night and I simply cannot find out how to make it work. I'm also slightly confused about this bit, CloseDialog:

CloseDialog(x02,x0003,x00,x00)
WaitForInstruction(x01,x00)
CloseDialog(x01,xFFFF,x00,x00)
Wait(00008)
CloseDialog(x02,xFFFF,x00,x00)

It has something to do with how many event text box's stay open before they close - but it also displays Algus's 3rd message.  Which is
//Message x03
{font:08}Algus{br}
{font:00}This is a matter of life and death.{br}
How can you say that?{end}

without ever having to use DisplayMessage at all in the event. This is what I don't quite get. There's nothing about CloseDialog on the event instruction page either. This black screen of doom is haunting me. Anyway, thanks to whoever helps me. I love you guys <3

RavenOfRazgriz

CloseDialog can be used to display messages too, you can check out EasyVent Editor Super Perfect's Help Files or the front page for info on that.

Your event only has 4 dialogues listed, by the way.  Your problem is likely a really simple one - you didn't delete your Text Offset [Text(x########)].  ALWAYS delete this when compiling a new event, especially if you've increased the number of instructions it has.  If not, your text will be written over your instructions that flow past the offset.  In your case, it sounds like you not removing the offset is leading to your EventEnd() command being written over by the dialogue, resulting in a hanging event.


Zafire

I did that before and it didn't work so...

I deleted everything and started anew, with a fresh test/attack file, took out the text offset and bam, it worked. With enough tinkering I even got the guest unit to walk forward one space, stand still, then spit out the message. Works like a charm, i'm going to have so much fun with this :D

Next question, before my brain blows up. I'm sure it's listed somewhere but I can't find it. What I want to do is create an event directly after sweegy woods before it sends me to the world map. Kind-of like what happens after you save Algus and there is an event after Mandalia.

What's confusing me is: The ENTD's and the lists of fights in the event script don't match up at all. For example, 01F is the Sweegy Woods battle, but it's 180 in the ENTD. How am I supposed to find out what is what? They don't line up at all either (ENTD starts at sweegy then moves through chapter 1, then back to mandalia/garland and does those. The attack.out editor goes in order.)

I assume what I have to do is open up the attack.out editor and make 01F load my new event under "After event do:" then make my new event load to world map. Would that make the game load right though? (For example, Dorter trade city loads as an option on the world map after Sweegy fight, how exactly does the game decide to load that information?)

I hope that made sense I was kind-of going back and forth there.

Cheetah

Something as simple as that will actually be very difficult, unless you are replace a different event. You would essentially have to shift and change where every event redirects to following your new event. There maybe a new tool released in the near future to help with that though.
Current Projects:

Zafire

Alright, that makes sense. What about this...

There is a second event in sweegy after you win the fight where everyone looks Ramza and he says "Just through these woods and we're almost to dorter."

Would I be able to make all 4 characters walk to a designated location, have them face a certain direction, and have an event like I want to before loading to the world map? That would look so freakin' weird though..@_@

Pickle Girl Fanboy

Are there any entries on event editing - specific examples of the scripting used - in the wiki?

Zafire

I hope someone can help me, I don't know why this isn't working. I got it to work a couple times correctly but I have no idea how, I could never reproduce it. Seems like it depends on where unit 12 is standing that determines if unit 12 will move or not. Big block of text inc:

Offset(x00040000)
//Remove the previous line if you wish not to override the offset in CONFIG.INI.

Wait(00020)
//
//Unit 7 walks to 9,4. This works
//
WalkTo(x07,x00,009,004,x00,x00,+008,x01)
WaitWalk(x07,x00)
UnitAnim(x07,x00,x06,x00,x00)
WaitForInstruction(x0B,x00)
DisplayMessage(x10,x70,x000B,x07,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
//
Focus(x12,x00,x12,x00,x00)
Camera(+00896,-31905,+02560,+00302,+03584,+00000,+04096,+00064)
WaitForInstruction(x04,x00)
Wait(00040)
{92}(r0100000C00)
WaitForInstruction(x43,x00)
Wait(00020)
//
//Everyone faces unit 12
//
FaceUnit(x12,x00,x12,x01,x00,x00,x14)
//
Wait(00010)
DisplayMessage(x10,x70,x0001,x01,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
wait(00060)
DisplayMessage(x10,x70,x0002,x12,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
wait(00060)
DisplayMessage(x10,x70,x0003,x07,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
wait(00060)
DisplayMessage(x10,x70,x0004,x12,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
wait(00060)
DisplayMessage(x10,x70,x0005,x12,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
wait(00060)
DisplayMessage(x10,x70,x0006,x01,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
wait(00060)
DisplayMessage(x10,x70,x0007,x12,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
wait(00060)
DisplayMessage(x10,x70,x0008,x01,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
wait(00060)
//
//Below, Unit 12 is supposed to walk to 8,4 but this isn't going off
//
WalkTo(x12,x00,008,004,x00,x00,+008,x01)
WaitWalk(x12,x00)
UnitAnim(x12,x00,x06,x00,x00)
WaitForInstruction(x0B,x00)
//
//Since focus was on unit 12 before, and unit 12 needs to walk next to unit unit 7
//and they need to be looking at each other, the below line plays. This works out well.
//
FaceUnit(x07,x00,x07,x01,x00,x00,x14)
Wait(00010)
Focus(x07,x00,x07,x00,x00)
WaitForInstruction(x04,x00)
//
//Unit 12 punches unit 7 with the 4xpunch animation, the punch sound plays 4 times.
//Unit 7 "dies", death animation plays. This works, but it looks funny because for some
//reason unit 12 wont stand next to unit 7.
//
DisplayMessage(x10,x70,x0009,x12,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
unitAnim(x12,x00,x68,x00,x00)
sound(x0015)
wait(00030)
sound(x0015)
wait(00030)
sound(x0015)
wait(00030)
sound(x0015)
wait(00060)
unitAnim(x07,x00,x1A,x00,x00)
sound(x009A)
wait(00120)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x70,x000A,x01,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
wait(00120)
WaitForInstruction(x01,x00)
WaitForInstruction(x01,x00)
{60}(r005A)
Wait(00040)
{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)
{1C}(r01)
{49}()
{82}()
{4A}()
Wait(00080)
{60}(r003C)
{3E}(r02000000FFFFFF3C00)
WaitForInstruction(x0C,x00)
ZERO(x006E)
ADD(x006E,x0005)
ZERO(x0281)
ADD(x0281,x0001)
{4B}()
EventEnd()

WTF is wrong with thissss. It works out perfectly except unit 12 wont move next to unit 7.