Final Fantasy Hacktics

Modding => Event Editing => Topic started by: Adhelbert on November 09, 2018, 09:41:08 am

Title: I could use some help over here
Post by: Adhelbert on November 09, 2018, 09:41:08 am
Heyyyy everyone. :D :D

Sooooooooo, i ran into couple of problems yesterday at night while i was working on an event, this is the event i have been working on:

//Text(x00000A94)
//Remove the previous line if you wish text to compile directly after instructions.

LoadEVTCHR(x00,x0C,x00)
WaitForInstruction(x34,x00)
SaveEVTCHR(x00)
LoadEVTCHR(x01,x0D,x00)
WaitForInstruction(x34,x00)
SaveEVTCHR(x01)
Erase(x01,x00)
Erase(x04,x00)
Erase(x07,x00)
Erase(x35,x00)
UnitAnim(x80,x00,x0002,x00)
WaitForInstruction(x0B,x00)
UnitAnim(x81,x00,x0002,x00)
WaitForInstruction(x0B,x00)
UnitAnim(x82,x00,x0002,x00)
WaitForInstruction(x0B,x00)
UnitAnim(x14,x00,x001A,x00)
WaitForInstruction(x0B,x00)
Wait(00030)
Camera(+00672,+00000,+00240,+00302,+00512,+00000,+04096,+00001)
WaitForInstruction(x04,x00)
Reveal(060)
Wait(00090)
Sound(x004C)
Wait(00015)
RotateUnit(x02,x01,x03,x01,x02,x04)
WaitRotateAll()
Wait(00015)
AddUnitStart()
AddUnit(x04,x00,x01)
AddUnit(x07,x00,x01)
AddUnit(x01,x00,x01)
AddUnitEnd()
WaitAddUnitEnd()
BlockStart()
WarpUnit(x04,x00,000,003,x00,x03)
Draw(x04,x00)
WalkTo(x04,x00,002,001,x00,x00,+020,x01)
WalkToAnim(x04,x00,x0002)
WaitWalk(x04,x00)
RotateUnit(x04,x00,x0B,x02,x01,x00)
WaitRotateUnit(x04,x00)
UnitAnim(x01,x00,x0002,x00)
WaitForInstruction(x0B,x00)
BlockEnd()
BlockStart()
Wait(00030)
WarpUnit(x07,x00,000,003,x00,x03)
Draw(x07,x00)
WalkTo(x07,x00,002,003,x00,x00,+024,x01)
WalkToAnim(x07,x00,x0002)
WaitWalk(x07,x00)
RotateUnit(x07,x00,x0B,x00,x01,x00)
WaitRotateUnit(x07,x00)
UnitAnim(x01,x00,x0002,x00)
WaitForInstruction(x0B,x00)
BlockEnd()
Wait(00060)
WarpUnit(x01,x00,000,003,x00,x03)
Draw(x01,x00)
WalkTo(x01,x00,001,002,x00,x00,+016,x01)
WaitWalk(x01,x00)
WalkTo(x01,x00,002,002,x00,x00,+016,x01)
WalkToAnim(x01,x00,x0002)
WaitWalk(x01,x00)
RotateUnit(x01,x00,x0B,x00,x01,x00)
WaitRotateUnit(x01,x00)
UnitAnim(x01,x00,x0002,x00)
WaitForInstruction(x0B,x00)
Wait(00045)
DisplayMessage(x10,x71,x0001,x07,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
Wait(00020)
UnitAnim(x02,x01,x0021,x00)
WaitForInstruction(x0B,x00)
Wait(00030)
DisplayMessage(x10,x72,x0002,x80,x00,x00,+00000,+00000,+00000,x02)
WaitForInstruction(x01,x00)
Wait(00005)
UnitAnim(x01,x01,x0021,x00)
WaitForInstruction(x0B,x00)
Wait(00060)
DisplayMessage(x10,x71,x0003,x01,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
Wait(00010)
Camera(+00280,-00108,+00168,+00302,+00512,+00000,+04096,+00080)
WaitForInstruction(x04,x00)
BlockStart()
AddUnit(x35,x00,x01)
WaitAddUnit()
WarpUnit(x35,x00,000,003,x00,x03)
Draw(x35,x00)
WalkTo(x35,x00,000,000,x00,x00,+028,x01)
WaitWalk(x35,x00)
WalkTo(x35,x00,004,000,x00,x00,+028,x01)
WaitWalk(x35,x00)
UnitAnim(x35,x00,x0021,x00)
WaitForInstruction(x0B,x00)
Wait(00010)
BlockEnd()
Wait(00060)
UnitAnim(x35,x00,x004C,x00)
Effect(x001C,x00,006,002,x00)
EffectStart()
UnitAnim(x02,x01,x0024,x00)
EffectEnd()
Wait(00045)
UnitAnim(x35,x00,x003D,x00)
WaitForInstruction(x0B,x00)
DisplayMessage(x10,x71,x0004,x35,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
Wait(00015)
UnitAnim(x01,x01,x0021,x00)
WaitForInstruction(x0B,x00)
Wait(00030)
DisplayMessage(x10,x71,x0005,x01,x00,x00,+00000,+00000,+00000,x02)
WaitForInstruction(x01,x00)
Wait(00020)
BlockStart()
WalkTo(x07,x00,005,003,x00,x00,+024,x01)
WaitWalk(x07,x00)
Wait(00002)
UnitAnim(x07,x00,x0041,x00)
WaitForInstruction(x0B,x00)
Wait(00002)
UnitAnim(x82,x00,x0019,x00)
WaitForInstruction(x0B,x00)
Wait(00015)
UnitAnim(x82,x00,x0034,x00)
WaitForInstruction(x0B,x00)
BlockEnd()
Wait(00005)
BlockStart()
WalkTo(x01,x00,005,002,x00,x00,+024,x01)
WaitWalk(x01,x00)
Wait(00002)
UnitAnim(x01,x00,x0041,x00)
WaitForInstruction(x0B,x00)
Wait(00002)
UnitAnim(x80,x00,x0019,x00)
WaitForInstruction(x0B,x00)
Wait(00015)
UnitAnim(x80,x00,x0034,x00)
WaitForInstruction(x0B,x00)
BlockEnd()
Wait(00005)
BlockStart()
WalkTo(x04,x00,005,001,x00,x00,+024,x01)
WaitWalk(x04,x00)
Wait(00002)
UnitAnim(x04,x00,x0041,x00)
WaitForInstruction(x0B,x00)
Wait(00002)
UnitAnim(x81,x00,x0019,x00)
WaitForInstruction(x0B,x00)
Wait(00015)
UnitAnim(x81,x00,x0034,x00)
WaitForInstruction(x0B,x00)
BlockEnd()
Wait(00030)
DisplayMessage(x10,x71,x0006,x07,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
BlockStart()
WalkTo(x07,x00,004,003,x00,x00,+008,x01)
WaitWalk(x07,x00)
BlockEnd()
BlockStart()
WalkTo(x01,x00,004,002,x00,x00,+004,x01)
WaitWalk(x01,x00)
BlockEnd()
BlockStart()
WalkTo(x04,x00,004,001,x00,x00,+006,x01)
WaitWalk(x04,x00)
BlockEnd()
Wait(00030)
UnitAnim(x07,x00,x002B,x00)
WaitForInstruction(x0B,x00)
Wait(00010)
Effect(x009A,x80,006,002,x00)
EffectStart()
EffectEnd()
Wait(00050)
Erase(x80,x00)
Erase(x81,x00)
Erase(x82,x00)
Wait(00060)
WalkTo(x07,x00,007,002,x00,x00,+020,x01)
WalkToAnim(x07,x00,x0021)
WaitWalk(x07,x00)
Wait(00020)
DisplayMessage(x10,x71,x0007,x07,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
Wait(00090)
DisplayMessage(x10,x72,x0008,x14,x00,x00,+00000,+00000,+00000,x02)
WaitForInstruction(x01,x00)
Wait(00020)
DisplayMessage(x10,x71,x0009,x07,x00,x00,+00000,+00000,+00000,x02)
WaitForInstruction(x01,x00)
Wait(00030)
Camera(+00672,+00000,+02000,+00302,+04608,+00000,+04096,+00030)
WaitForInstruction(x04,x00)
Wait(00006)
UnitAnim(x04,x00,x0259,x00)
Wait(00006)
Wait(00120)
FadeSound(x00,060)
ColorScreen(x02,000,000,000,255,255,255,+00060)
WaitForInstruction(x0C,x00)
ZERO(x006E)
ADD(x006E,x0007)
ZERO(x006F)
ADD(x006F,x0003)
ZERO(x01C2)
ADD(x01C2,x0001)
ZERO(x0283)
ADD(x0283,x0001)
ZERO(x03F1)
ADD(x03F1,x0002)
{7C}()
EventEnd2()
EventEnd()


I have two questions for now:

1. What's the function of the text highlighted in red?
2. The camera makes unnecessary rotations whenever the two effects were to play, you will find the commands highlighted in green.



All help are appreciated and please, tell me if i missed up some details or something. :mrgreen:
Title: Re: I could use some help over here
Post by: Xifanie on November 09, 2018, 11:26:30 am
1. It's necessary for savestate event editing so the text offset always remains the same (otherwise if you add/remove an instruction, the text will be compiled right after the event, and thus will move). You normally need to make sure you're giving this a high enough number so that you have enough space to add a bunch of instructions, but not too high that it break the event space limit, which is 0x2000. 0x1800 is a good number for this. However you don't need to do any of this if you use the newest Event Instruction Upgrade hack.

2. Use the camera instruction helper to properly center the camera where the effect will play so it doesn't go back and forth when playing an Effect.
http://ffhacktics.com/smf/index.php?topic=10018.0
Title: Re: I could use some help over here
Post by: Adhelbert on November 12, 2018, 04:15:50 am
Quote from: Xifanie on November 09, 2018, 11:26:30 am
Use the camera instruction helper to properly center the camera where the effect will play so it doesn't go back and forth when playing an Effect.
http://ffhacktics.com/smf/index.php?topic=10018.0


Okay, thanks for recommending to use your tool, it turned out to be useful the most.


I used your camera instruction helper to insert the camera command before the effect commands, the good thing is, unnecessary rotations doesn't happen anymore, now this happens:


I don't know what i missed up to make the effect play in the far western corner and also i don't want for any damage to be displayed on the screen. :cry: :cry: :cry: :cry: :cry:
Title: Re: I could use some help over here
Post by: 3lric on November 12, 2018, 08:00:58 am
You can place a ghost unit on that location and call the effect on them instead to not show the damage. As for the effect playing in the wrong spot, either you derped the command somehow, or its just one of those weird effects that doesnt work quite right in events.
Title: Re: I could use some help over here
Post by: Adhelbert on November 13, 2018, 04:20:58 am
Quote from: Elric on November 12, 2018, 08:00:58 am
You can place a ghost unit on that location and call the effect on them instead to not show the damage.


Okay, i will definitely gonna try it out this weekend. Still, i gotta ask, is there a proper way to execute this command, cause as far as now, i haven't seen the game uses this command before.

Quote from: Elric on November 12, 2018, 08:00:58 am
As for the effect playing in the wrong spot, either you derped the command somehow, or its just one of those weird effects that doesnt work quite right in events.


I replaced Ultima effect with flare and it worked just fine. :D :D


Thanks for your time guys. :) :) :)
Title: Re: I could use some help over here
Post by: Xifanie on November 14, 2018, 12:50:00 pm
Yeah, Ultima would need 3 parameters:
- Caster coordinates (used for a few 'throw' effects like lifebreak, IIRC)
- Main Effect coordinates
- Hit Effect target ID

As you can't define the main effect coordinates (defaults to X = 0 & Y = 0), or even set multiple targets, this definitely limits the list of effects we can use, unfortunately.

I wonder how hard it would be to make a hack to allow defining those coordinates