• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
October 31, 2024, 08:17:54 pm

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!


How to make a Story Mod (WIP Tutorial)

Started by 3lric, December 28, 2011, 05:20:12 am

Grand Angel

Yep, that revision worked perfectly!  Gafgarion now says his lines without fail.

Thank you!

3lric

  • Modding version: PSX

Grand Angel

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?

Xifanie

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.
  • 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

Grand Angel

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.

3lric

  • Modding version: PSX

Grand Angel

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

3lric

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

Grand Angel

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.

IronArm

(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}

Jumza

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.
  • 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.

IronArm

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)


After camera focuses on Unit ID: 1 and the sprites correct themselves:


The second screenshot is what they are suppose to be doing from the very beginning.

3lric

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

IronArm

January 11, 2014, 11:41:50 pm #93 Last Edit: January 12, 2014, 12:17:31 am by IronArm
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.



It did fix Unit 5

3lric

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

IronArm

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.

3lric

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

IronArm

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.

3lric

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

IronArm

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.