Final Fantasy Hacktics

Modding => Event Editing => Topic started by: dw6561 on February 28, 2016, 12:12:45 am

Title: DW's Events
Post by: dw6561 on February 28, 2016, 12:12:45 am
Okay, so I started trying to event. Here's my first attempt at one. But remember, I'm still learning so things may not be up to snuff at first.

UPDATE: Camera commands (No focus) added, learned how to savestate edit






[youtube]p-q1iUx4sgw[youtube]



Updated Script:

// __________________________________________________________________
//| Event Script x002 | Event Offset: x004000 | Text offset: x0041C5 |
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Offset(x00004000)
//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.

UnitAnim(x01,x00,x0002,x00)
Reveal(030)
Focus(x01,x00,x01,x00,x00)
Camera(+00504,+00180,+00840,+00302,+00512,+00000,+04096,+00001)
WaitForInstruction(x04,x00)
Wait(030)
DisplayMessage(x10,x11,x01,x01,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
Camera(+00504,-00144,+00504,+00302,+03500,+00000,+04096,+00080)   
WalkTo(x01,x00,004,007,x00,x00,+008,x01)         
WaitWalk(x01,x00)                 
UnitAnim(x01,x00,x0002,x00)
UnitAnimRotate(x01,x00,x00,x005E,x00)
Music(x01,+127,000)
AddUnitStart()
AddUnit(x02,x00,x01)
AddUnit(x03,x00,x01)
AddUnit(x04,x00,x01)
AddUnitEnd()
WaitAddUnitEnd()
DisplayMessage(x10,x11,x02,x02,x00,x09,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
BlockStart()
SpriteMove(x02,x00,+00000,+00000,-00014,x00,x01,+00000)
ColorUnit(x02,x00,x01,-006,-004,-002,000)
Wait(00002)
Draw(x02,x00)
ColorUnit(x02,x00,x08,+000,+000,+000,004)
SpriteMove(x02,x00,+00000,+00000,+00000,x00,x01,+00018)
WaitSpriteMove(x02,x00)
WalkTo(x02,x00,001,005,x00,x00,+008,x01)
WaitWalk(x02,x00)
UnitAnim(x02,x00,x0002,x00)
BlockEnd()
Sound(x0040)
WaitForInstruction(x08,x00)
UnitAnim(x01,x00,x0022,x00)
DisplayMessage(x10,x11,x03,x01,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
BlockStart()
SpriteMove(x03,x00,+00000,+00000,-00014,x00,x01,+00000)
ColorUnit(x03,x00,x01,-006,-004,-002,000)
Wait(00002)
Draw(x03,x00)
ColorUnit(x03,x00,x08,+000,+000,+000,004)
SpriteMove(x03,x00,+00000,+00000,+00000,x00,x01,+00018)
WaitSpriteMove(x03,x00)
WalkTo(x03,x00,001,005,x00,x00,+008,x01)
WaitWalk(x03,x00)
UnitAnim(x03,x00,x0002,x00)
BlockEnd()
Camera(+00392,-00144,+00504,+00302,+04609,+00000,+04096,+00060)                  
WaitForInstruction(x04,x00)
DisplayMessage(x10,x11,x04,x03,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
UnitAnimRotate(x01,x00,x00,x0002,x00)
FaceUnit(x02,x00,x03,x00,x00,x00,x01)
Sound(x0030)
DisplayMessage(x10,x11,x05,x03,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
BlockStart()
SpriteMove(x04,x00,+00000,+00000,-00014,x00,x01,+00000)
ColorUnit(x04,x00,x01,-006,-004,-002,000)
Wait(00002)
Draw(x04,x00)
ColorUnit(x04,x00,x08,+000,+000,+000,004)
SpriteMove(x04,x00,+00000,+00000,+00000,x00,x01,+00018)
WaitSpriteMove(x04,x00)
WalkTo(x04,x00,001,005,x00,x00,+008,x01)
WaitWalk(x04,x00)
UnitAnim(x04,x00,x0002,x00)
BlockEnd()
FaceUnit(x04,x00,x04,x01,x00,x00,x01)
Camera(+00616,-00144,+00504,+00302,+03584,+00000,+04096,+00030)               
WaitForInstruction(x04,x00)
DisplayMessage(x10,x11,x06,x04,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
FaceUnit(x01,x00,x04,x01,x00,x00,x01)
DisplayMessage(x10,x11,x07,x01,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
Camera(+00392,-00144,+00392,+00302,+04609,+00000,+04096,+00030)
WaitForInstruction(x04,x00)
DisplayMessage(x10,x11,x08,x03,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
AddGhostUnit(x72,x00,x00,004,007,x00,x00,x01)
WaitAddUnit()
Camera(+00392,-00144,+00504,+00302,+04780,+00000,+04096,+00030)
WaitForInstruction(x04,x00)
DisplayMessage(x10,x11,x09,x01,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
RotateUnit(x01,x00,x08,x00,x01,x00)
UnitAnim(x01,x00,x002C,x00)
DisplayMessage(x10,x11,x0A,x01,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x11,x0B,x01,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x11,x0C,x02,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
Camera(+00504,-00144,+00504,+00302,+03584,+00000,+04096,+00020)
UnitAnim(x01,x00,x0002,x00)
WalkTo(x02,x00,004,006,x00,x00,+032,x01)
RotateUnit(x01,x00,x00,x00,x01,x00)
WaitWalk(x02,x00)
UnitAnim(x02,x00,x0041,x00)
Sound(x001A)
UnitAnim(x01,x00,x0018,x00)
Sound(x0030)
WaitForInstruction(x0B,x00)
Wait(060)
WalkTo(x02,x00,004,004,x00,x00,+008,x01)
WaitWalk(x02,x00)
UnitAnim(x02,x00,x0002,x00)
UnitAnim(x01,x00,x0002,x00)
Camera(+00616,-00144,+00392,+00302,+03413,+00000,+04096,+00020)
WaitForInstruction(x04,x00)
FaceUnit(x04,x00,x02,x00,x00,x00,x00)
DisplayMessage(x10,x11,x0D,x02,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
UnitAnim(x02,x00,x0002,x00)
DisplayMessage(x10,x11,x0E,x04,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
FaceUnit(x01,x00,x04,x01,x00,x00,x01)
UnitAnim(x04,x00,x65,x00,x00)
Camera(+00504,-00144,+00616,+00302,+03584,+00000,+04096,+00020)
WaitForInstruction(x04,x00)
Effect(x000F,x64,005,000,x00)
EffectStart()
UnitAnim(x01,x00,x19,x00,x00)
EffectEnd()
WaitForInstruction(x41,x00)
Sound(x009A)
UnitAnim(x01,x00,x34,x00,x00)
Wait(30)
EventEnd()

//INSTRUCTION SECTION END -  TEXT START
//Message x01
{font:08}Suspicious Dude{br}
{font:00}This must be the place.{br}
Now to find a way in...{end}

//Message x02
{font:08}Alicia{br}
{font:00}Stop, thief!{end}

//Message x03
{font:08}Totally Not A Thief{br}
{font:00}What! How dare you{br}
insinuate that?{br}
Do I look like a thief?{end}

//Message x04
{font:08}Lavian{br}
{font:00}Yes...{end}

//Message x05
{font:08}Lavian{br}
{font:00}We don't have time{br}
for this...{end}

//Message x06
{font:08}Rad{br}
{font:00}Stop playing games, Zero.{end}

//Message x07
{font:08}Zero{br}
{font:00}How do you even know my{br}
name, anyway?{end}

//Message x08
{font:08}Lavian{br}
{font:00}Do the words "Beloved{br}
Lord Bafai, I've come{br}
to steal your treasure!" ring{br}
a bell?{end}

//Message x09
{font:08}Zero{br}
{font:00}Well well well...{br}
It looks like the cat{br}
has caught the mouse.{end}

//Message 0A
{font:08}Zero{br}
{font:00}Of course, I didn't{br}
think the help he'd{br}
hire would be SUCH a bore.{end}

//Message x0B
{font:08}Zero{br}
{font:00}Not that it matters,{br}
as I will simply be{br}
going now.{end}

//Message x0C
{font:08}Alicia{br}
{font:00}Not so fast!{end}

//Message x0D
{font:08}Alicia{br}
{font:00}This is getting really{br}
dumb. Rad? Will you do {br}
the honors?{end}

//Message x0E
{font:08}Rad{br}
{font:00}Sure thing.{br}
Level 5 Holy!{end}

Title: Re: DW's Events
Post by: Xifanie on February 28, 2016, 09:35:27 am
Very excessive camera instructions here, and they're all way too fast. It's so distracting I have a very hard time paying attention to the event otherwise. Focus is not a bad instruction to use in this case, but understand it was developed for battles, and thus, is not the best for moving the camera to an optimal position for your needs. Learning to use the Camera instruction without Focus is of extreme importance if you want to keep eventing. Check out my Camera Helper (http://ffhacktics.com/smf/index.php?topic=10018.0) to help you out with Camera Instructions.

The ideal scenario: You have the camera focused between the characters talking (adjust the rotation angle if necessary), and in the middle of the screen enough so that their sprites are not covered by dialog boxes.

It's also a good idea to send the camera where Holy will be cast BEFORE it is cast; otherwise what happens is that the camera moves quickly to the target location, casts Holy, then quickly moves back to its previous position (it's not pretty). It's also a good idea to use ghost units as targets for Effect spells instead of real units so that they don't start walking after being hit.

Also, always watch out for the page flipping icon overlapping text.

Last of all, I don't know if you are savestate editing yet, but it sure saves a whole load of trouble.

Otherwise, good job of your first event handling animations, characters walking onto the field, and your timings are good too!
Title: Re: DW's Events
Post by: Jumza on February 28, 2016, 09:40:47 am
All the stuff Xifanie said. If you need help with any of the stuff she mentioned be sure to ask us!

Also, great job with those UnitAnims, I really like how you used them and I thought they looked great :o

EDIT: I also noticed that while you appear to be using the new CONFIG.INI file, your event starts with this instruction UnitAnim(x01,x00,x02,x00,x00)
How is that even compiling correctly with the other differently structured UnitAnim's? o.o
Title: Re: DW's Events
Post by: 3lric on February 28, 2016, 10:00:39 am
Aside from what Xif already mentioned. I see an error with Zero's animations. Before rotating a unit, you always want to set that units animation back to 0002, otherwise they are going to use the last animation everytime you rotate them.

An example would be this right here:

UnitAnim(x01,x00,x002C,x00)
DisplayMessage(x10,x11,x0A,x01,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x11,x0B,x01,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x11,x0C,x02,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
WalkTo(x02,x00,004,006,x00,x00,+032,x01)
RotateUnit(x01,x00,x00,x00,x01,x00)


Since the UnitAnim wasn't put back to 0002 before the rotate, once the rotate happens the unit will play UnitAnim 2C again.

This may be what you intended, but it did look a bit off to me.

Either way, you are doing well, and I hope to see more from you.
Title: Re: DW's Events
Post by: dw6561 on February 29, 2016, 03:20:49 am
Thanks for all the advice guys. I figured out how to do the camera commands somewhat, though the map I chose is not kind to rotations because of the giant wall in the back, so I had to stick with rotations in the front. Let me know if the rotation is superfluous, because some of the time I was trying to be cool and other times I was trying to fit the text box on the screen without overlapping other characters.

I also fixed the holy thingy somewhat, though Rad got cut off the screen and you can no longer see him as clearly.