• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
March 29, 2024, 03:15:28 am

News:

Use of ePSXe before 2.0 is highly discouraged. Mednafen, RetroArch, and Duckstation are recommended for playing/testing, pSX is recommended for debugging.


DW's Events

Started by dw6561, February 28, 2016, 12:12:45 am

dw6561

February 28, 2016, 12:12:45 am Last Edit: February 29, 2016, 02:56:32 am by dw6561
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}

  • Modding version: PSX
This is FF Tactics. All the Tactics you can ever have, all in one byte.

Xifanie

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 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!
  • Modding version: PSX
Love what you're seeing? https://supportus.ffhacktics.com/ 💜 it's really appreciated

Anything is possible as long as it is within the hardware's limits. (ie. disc space, RAM, Video RAM, processor, etc.)
<R999> My target market is not FFT mod players
<Raijinili> remember that? it was awful

Jumza

February 28, 2016, 09:40:47 am #2 Last Edit: February 28, 2016, 10:11:49 am by Jumza
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
  • Modding version: PSX
Nyzer: Alma teleports out of her own possessed body.
Raijinili: Remember that you're telling a modding community that the game they love could use some fixing.

3lric

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.
  • Modding version: PSX

dw6561

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.
  • Modding version: PSX
This is FF Tactics. All the Tactics you can ever have, all in one byte.