Author Topic: [PSX/PC] General editor - Hades Workshop (0.50b)  (Read 844518 times)

resinate

  • *
  • Posts: 96
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1450 on: 2019-02-28 00:05:08 »
Heres the script everything works BUT zidane vivi and quina
case 1 and 2 are switched cuz of how they coded the text box in game.

Function Entry16_Init
    set VAR_GenUInt16_21 = 0
    SetPartyReserve( VAR_GenUInt16_21 )
    switch 8 ( GetDialogChoice ) from 0 {
    case +0:
        SetCharacterData( 0, 1, 255, 255, 255 )
        break
    case +1:
        SetCharacterData( 2, 1, 255, 255, 255 )
        break
    case +2:
        SetCharacterData( 1, 1, 255, 255, 255 )
        break
    case +3:
        SetCharacterData( 3, 1, 255, 255, 255 )
        break
    case +4:
        SetCharacterData( 4, 1, 255, 255, 255 )
        break
    case +5:
        SetCharacterData( 5, 1, 255, 255, 255 )
        break
    case +6:
        SetCharacterData( 6, 1, 255, 255, 255 )
        break
    case +7:
        SetCharacterData( 7, 1, 255, 255, 255 )
        break
    }
    set VAR_GenUInt16_21 = 255
    SetPartyReserve( VAR_GenUInt16_21 )
    TerminateEntry( 255 )
    return


whats the psx variable of "set Setting_PartyReserve = 0"
some reason 16_19 and 16_21 do same thing
« Last Edit: 2019-02-28 02:35:37 by resinate »

ToraCarol

  • *
  • Posts: 120
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1451 on: 2019-02-28 06:39:22 »
Thank you Tirlititi, and sorry again..I'll check the problem and let you know


ps: And another quick question.. meanwhile I was waiting for the reply I just started to work on the other Fields, on the Blue Narciss I put the scripts from my Steam Project.. and everything is cool to HWS too, every  entry is set right, and every script is at his place..

Code: [Select]
RunScript( 2, 2, 15 )
        Wait( 3 )
        WindowSyncEx( 2, 0, 128, 86 )


        RunScript( 2, 4, 14 ) <-- This script does not react
        WindowSyncEx( 4, 0, 128, 276 )


The function is a simple animation of Zidane, so is strange, because as I said everything, entry and functions are in their own place and on Steam works fine!

Any idea about this STRANGE problem?

resinate

  • *
  • Posts: 96
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1452 on: 2019-02-28 13:37:52 »
yea for some reason "SetPartyReserve" doesnt effect zidane vivi and quina thats on disc 4 other 6 chars work 100% fine

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1453 on: 2019-02-28 22:06:02 »
@resinate: No idea. Those characters don't have any special traitment :o
"VAR_GenUInt16_21" and "Setting_PartyReserve" are synonymous indeed ("Setting_PartyReserve" appeared in more recent versions of HW but you can still use "VAR_GenUInt16_21").

@ToraCarol: I answered that about it.
Quote
The script not reacting can be because Zidane is already moving, which cancels his animation to play? If he's walking and you use a "RunAnimation", I think that it doesn't work. You can also try to replace this line by a "RunAnimationEx( 4, ... )".

resinate

  • *
  • Posts: 96
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1454 on: 2019-03-01 01:15:15 »
still trying to figure it out, as it seems i was wrong that ONLY eiko can be reset to lvl 1 no one can, just updates their levels

well i guess ff9 has its limits, really sucks u cant level reset anyone in game had some huge potential with this...... seeing ppl only responding once a day everyones has a busy plate lol
« Last Edit: 2019-03-01 02:26:00 by resinate »

Incinerator

  • Guest
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1455 on: 2019-03-01 01:25:44 »
also what does the symbol mean? "|=" in set Setting_PartyInitialized |= 4

It's Bitwise variable // assignment!.

resinate

  • *
  • Posts: 96
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1456 on: 2019-03-01 02:55:25 »
yea after hours of researching there is no possible way to change a chars levels after obtaining them.

if anyone knows a method lemme know, all i know is eiko is only char in ff9 that can be reseted.
« Last Edit: 2019-03-01 19:12:54 by resinate »

ToraCarol

  • *
  • Posts: 120
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1457 on: 2019-03-02 09:46:40 »
@resinate: No idea. Those characters don't have any special traitment :o
"VAR_GenUInt16_21" and "Setting_PartyReserve" are synonymous indeed ("Setting_PartyReserve" appeared in more recent versions of HW but you can still use "VAR_GenUInt16_21").

@ToraCarol: I answered that about it.

Oh sorry.. mistake of mine

resinate

  • *
  • Posts: 96
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1458 on: 2019-03-02 10:18:12 »
tril have u had a chance to find out why eiko is only char in ff9 that can be reseted back to level 1? wish someone would talk to me in discord lol i really wanna figure this out

i need help in finding a way to reset this code block to zero, if i can do that i can reset chars back to level 1 with it.

        if ( ( ( VAR_GenUInt16_19 >> 0 ) & 1 ) == 0 ) {
            SetCharacterData( 0, 1, 0, 9, 0 )
            set VAR_GenUInt16_19 |= 1
        }

how do i set int16_19  back to 0?
« Last Edit: 2019-03-02 10:42:54 by resinate »

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1459 on: 2019-03-02 10:49:21 »
Ok.
I've double-checked what the "update level" option does and it can't be used to level down the characters...
Code: [Select]
if (update_lv) {
int num = ff9play.FF9Play_GetAvgLevel(slot_no);
int lv;
if (pLAYER.info.serial_no == 10 || pLAYER.info.serial_no == 11)
lv = num;
else
lv = Mathf.Max((int)pLAYER.level, num);
ff9play.FF9Play_Build(slot_no, lv, null, false);
}
Except for the character serial number 10 and 11, which is indeed Eiko (she has 2 different serial numbers because she can wear two different kinds of weapons, flutes and rackets), the script is not allowed to reduce the level in any way.

In the Steam version, you can use the tool dnSpy (or even HW's CIL code modding for this) to edit the code above and remove that "take the max" line. It's in the class "ff9play" and its method "FF9Play_Change".

resinate

  • *
  • Posts: 96
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1460 on: 2019-03-02 11:16:56 »
what about dagger? she can use 2 weapons also and she doesnt reset

closest ive gotten so far was using party 512 or 1024 and it does set everyone's level to that level, prob is i cant reset those 2 levels lol.

only method i can see is trying to unregister the chars

btw whats this lol FF9Play_ChangeLevel

if ur here can u look up what these are.

        0xA3( 0, 0, 0, 0 )
        0x76( 0, 0 )
        0x77( 0, 0 )
        0xC3( 0, 0 )
        0xC9( 0, 0, 0, 0, 0 )

i found this         0xDB( 0, 0 ) which 1st aug is char id but no clue what 2nd is
« Last Edit: 2019-03-02 11:39:05 by resinate »

ToraCarol

  • *
  • Posts: 120
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1461 on: 2019-03-02 11:35:49 »
Again sorry Tirlititi sometimes I get confused easily when I'm modding ^^''  :oops: You have a huge patience and i sincerely thank you about that

@ToraCarol: I don't know what could prevent the field to load (or the fading to happening). Have you properly setup Blank's init function?


So that's what I did

For the Init (I've added few things..but i don't know if they are necessary)

Code: [Select]
Function Blank_Init
    if ( ( General_FieldEntrance == 4 ) && ( VAR_GlobUInt8_30 == 1 ) ) {
        set VAR_GlobInt16_0 = 64956
        set VAR_GlobInt16_4 = 273
        set VAR_GlobInt16_6 = 224
        set VAR_GlobInt16_2 = 64967
    }
    SetModel( 5467, 87 )
    CreateObject( VAR_GlobInt16_0, VAR_GlobInt16_4 )
    TurnInstant( VAR_GlobInt16_6 )
    SetStandAnimation( 462 )
    SetWalkAnimation( 5225 )
    SetRunAnimation( 5222 )
    SetLeftAnimation( 5223 )
    SetRightAnimation( 5224 )
    SetObjectLogicalSize( 20, 20, 30 )
    SetAnimationStandSpeed( 14, 16, 18, 20 )
    SetHeadAngle( 96, 61 )
    RunSoundCode( 4616, 919 )
    RunSoundCode( 4616, 914 )
    RunModelCode( 16, 25, 4, 919 )
    RunModelCode( 17, 25, 4, 914 )
    RunModelCode( 18, 25, 4, 1 )
    RunSoundCode( 4616, 919 )
    RunSoundCode( 4616, 914 )
    RunModelCode( 16, 25, 13, 919 )
    RunModelCode( 17, 25, 13, 914 )
    RunModelCode( 18, 25, 13, 1 )
    RunSoundCode( 4616, 919 )
    RunSoundCode( 4616, 914 )
    RunModelCode( 16, 38, 0, 919 )
    RunModelCode( 17, 38, 0, 914 )
    RunModelCode( 18, 38, 0, 1 )
    RunSoundCode( 4616, 919 )
    RunSoundCode( 4616, 914 )
    RunModelCode( 16, 38, 8, 919 )
    RunModelCode( 17, 38, 8, 914 )
    RunModelCode( 18, 38, 8, 1 )
    DefinePlayerCharacter(  )
    if ( VAR_GlobUInt8_30 != 1 ) {
        set VAR_GlobBool_158 = 1
        if ( VAR_GlobBool_159 == 1 ) {
            if ( VAR_GlobBool_156 == 0 ) {
                EnableMove(  )
                0x27( 255 )
                if ( VAR_GlobBool_144 == 0 ) {
                    EnableMenu(  )
                }
            }
        }
    }
    return

Fo the Loop

Code: [Select]
Function Blank_Loop
    DisableShadow(  )
    RunModelCode( 4, 1, -100, 0 )
    Wait( 1 )
    loop

And for the Main Init

Code: [Select]
  SetControlDirection( 0, 0 )
    InitCode( 1, 0 )
    InitCode( 2, 0 )
    InitCode( 3, 0 )
    InitCode( 4, 0 )
    if ( VARL_GenBool_2432 == 1 ) {
        ShowTile( 5, 0 )
        ShowTile( 6, 0 )
    }
    SetRandomBattleFrequency( 128 )
    SetRandomBattles( 1, 67, 67, 67, 67 )
    if ( ( General_ScenarioCounter == 2010 ) && ( !VARL_GenBool_2432 ) ) {
        set VAR_GlobUInt8_30 = 1
        InitObject( 10, 0 )
        InitObject( 7, 0 )
        InitCode( 6, 0 )
        InitRegion( 8, 0 )
        InitRegion( 9, 0 )
        set VARL_GenBool_2432 = 1
    } else {
        set VAR_GlobUInt8_30 = 0
        if ( General_FieldEntrance != 10 ) {
            InitObject( 10, 0 )
            InitRegion( 8, 0 )
            InitRegion( 9, 0 )
        } else {
           
                InitObject( 17, 0 )
           
        }

And there this one on the Swamp after the cinematic

Code: [Select]
0xA9( 250 )
        FadeFilter( 2, 1, VAR_GlobUInt8_17, 255, 255, 255 )
        if ( ( ( ( SyncCinematic & 127 ) != 17 ) && ( ( SyncCinematic & 128 ) == 0 ) ) && ( VAR_GlobBool_146 == 1 ) ) {
            while ( ( SyncCinematic & 127 ) != 1 ) {
                Wait( 1 )
            }
            Wait( 1 )
        }
        set VAR_GlobBool_162 = 1
        set VAR_GlobBool_163 = 1
        if ( VAR_GlobBool_167 == 1 ) {
            RunSoundCode( 265, 65535 )
            set VAR_GlobBool_167 = 0
        }
        if ( VAR_GlobBool_162 == 0 ) {
            if ( VAR_GenUInt8_13 < 9 ) {
                set VAR_GenUInt8_13 = 3
            }
            RunSoundCode1( 20864, 655, 0 )
        }
        if ( VAR_GlobBool_163 == 0 ) {
        }
        set General_FieldEntrance = 27
        Field( 250 )

In this last one I simply changed the Field from 256 to 250. I was wrong something for sure..but I prefer to ask you and understand before i can mess everything

Quote
The script not reacting can be because Zidane is already moving, which cancels his animation to play? If he's walking and you use a "RunAnimation", I think that it doesn't work. You can also try to replace this line by a "RunAnimationEx( 4, ... )".

Now I've tried to make somtehing like that

Code: [Select]
   RunScript( 2, 2, 15 )
        WindowSyncEx( 2, 0, 128, 86 )
        Wait( 3 )
        RunAnimationEx( 4, 3397 )
        WindowSyncEx( 4, 0, 128, 276 )
        WaitAnimationEx( 0 )
        Wait( 3 )

But seems to not work anyway... :( Anyway the script is based on an extra that I wanted to add when Blank says that he "decides to join" instead of "the boss asked" so..the script is just an answer of Zidane..nothing particular..

And as I said..is strange..because on Steam works perfectly!
« Last Edit: 2019-03-02 13:48:25 by ToraCarol »

resinate

  • *
  • Posts: 96
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1462 on: 2019-03-02 11:45:36 »
tril and tora come to discord would be ALOT ezer to talk there

also tril how did u even find that and how is it linked to setchar data?

hey trill in steam version is location of all the set VAR_GlobUInt8_24 variables ??

TRIL what about this "GetEntryProperty(0, 0)" where is set version?

whats these?  if ( VAR_GlobInt16_8 != 99 ) { ???? the 8 10 12 and 14 mean?
« Last Edit: 2019-03-02 12:47:30 by resinate »

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1463 on: 2019-03-02 15:21:22 »
@resinate: Dagger also has 2 serial numbers but they are not handled differently than the others.
The variables "VAR_GenUInt16_19" have nothing to do with it. You can easily remove the "if" line so this variable doesn't appear anymore.
This lol FF9Play_Change is part of the game's source code. dnSpy is a tool that can omg access to this code and change it.

Your last post is incomprehensible. Please make some effort.

@ToraCarol: In Blank's Init, remove the block "if ( ( General_FieldEntrance == 4 ) && ( VAR_GlobUInt8_30 == 1 ) ) {" and instead setup the position you want to give to Blank by selecting the line "CreateObject" and the helper "Field" on the left of the window (showing the field's walkmesh).
In Blank's loop, what is the "RunModelCode( 4, 1, -100, 0 )"? You should probably remove that line and the "DisableShadow" (unless you want to hide Blank's shadow for some reason).
In the swamp's function, you still have the line "set General_FieldEntrance = 27" while it should be "set General_FieldEntrance = 10".

Ah, and the animation is not working on PSX because you can't use all the animations there. Each field has the datas of some animations linked to it (the animations that the devs used for that field) and you can't access to the others.
On Steam, you can access any model and any animation at any time.

ToraCarol

  • *
  • Posts: 120
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1464 on: 2019-03-02 18:20:16 »


@ToraCarol: In Blank's Init, remove the block "if ( ( General_FieldEntrance == 4 ) && ( VAR_GlobUInt8_30 == 1 ) ) {" and instead setup the position you want to give to Blank by selecting the line "CreateObject" and the helper "Field" on the left of the window (showing the field's walkmesh).
In Blank's loop, what is the "RunModelCode( 4, 1, -100, 0 )"? You should probably remove that line and the "DisableShadow" (unless you want to hide Blank's shadow for some reason).
In the swamp's function, you still have the line "set General_FieldEntrance = 27" while it should be "set General_FieldEntrance = 10".

Ah, and the animation is not working on PSX because you can't use all the animations there. Each field has the datas of some animations linked to it (the animations that the devs used for that field) and you can't access to the others.
On Steam, you can access any model and any animation at any time.

Yey! It works! Thanks a bunch!  ;D ;D

Oh...I got it. Ok...so I'll keep to work on Steam! Thanks for let me know  8)
« Last Edit: 2019-03-02 20:18:39 by ToraCarol »

ToraCarol

  • *
  • Posts: 120
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1465 on: 2019-03-02 21:07:57 »


Tirlititi, why Blank is like he's not walking in the water?x''D  It's something related to the model?

(And what about the "texture" effects? Like the "Night Effect", "Light Of Branbal" on the model etc?  I'd like to solve somehow... it's kinda creepy to see Blank colorful x'D)
« Last Edit: 2019-03-03 19:37:51 by ToraCarol »

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1466 on: 2019-03-03 21:47:56 »
Apparently, the water effect is handled by the different functions "Code1_Loop", "CodeN_11" and "CodeN_12" (with N ranging through 2, 3 and 4). They are SPS effects.
The problem is that they are specifically made for Zidane (ObjectUID_10). You can change every instance of "ObjectUID_10" to "ObjectUID_250" in these functions: it will refer to the party's character (so Zidane most of the time and Blank in your modifications). It would be more difficult to have two characters in the water at the same time apparently.

resinate

  • *
  • Posts: 96
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1467 on: 2019-03-04 14:09:38 »
i was more surprised the fact no char data can be fetched thru variables like how chocobo scripts work

so i was looking around at max level coding in game and found this line

ff9play.FF9Play_ChangeLevel(i, 99, false);

can this be used at all in psx version???

well for now im gonna use a boss rush script lol
« Last Edit: 2019-03-05 01:43:34 by resinate »

ToraCarol

  • *
  • Posts: 120
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1468 on: 2019-03-07 16:25:27 »

Thanks for the reply, as always  ;)

Just want to ask...whats the best way to install the Dwight's "SFX & Missing Enemy Death Sounds Fix" to  be compatible with my Mod? (When i copypaste the resoruce.assets, obviously, the game
looks kinda corrupted)

It's necessary to start from a clean project?

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1469 on: 2019-03-07 16:42:05 »
@resinate: No, it's not accessible from the PSX version. Only the Steam version allows to modify its source code.

@ToraCarol: The missing death sounds is just a single file to import in the "resources.assets". You can get it there for instance. It can be imported either in your "resources.assets" before doing your stuff with HW or after generating the modded files, it doesn't matter.
I don't remember if that mod also update the sounds with better ones. If that's the case, it is files like p0data61, 62 or 63 that are not modified by HW so it's perfectly compatible.

Incinerator

  • Guest
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1470 on: 2019-03-07 19:21:54 »
Thanks for the reply, as always  ;)

Just want to ask...whats the best way to install the Dwight's "SFX & Missing Enemy Death Sounds Fix" to  be compatible with my Mod? (When i copypaste the resoruce.assets, obviously, the game
looks kinda corrupted)

It's necessary to start from a clean project?

You can use that resources.assets as a base before beginning your mod with HW!.
If you still have your .hws file, you can do so.

I don't remember if that mod also update the sounds with better ones. If that's the case, it is files like p0data61, 62 or 63 that are not modified by HW so it's perfectly compatible.

It does and is compatible!.

ToraCarol

  • *
  • Posts: 120
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1471 on: 2019-03-08 09:41:17 »
Thanks to both for the reply! For now i put the Enemy Death sound fix and works like  a charm!!!

Now I'm checkin for the SFX mod, I let you know for anything else  ;)
« Last Edit: 2019-03-08 10:24:56 by ToraCarol »

Zara9

  • *
  • Posts: 559
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1472 on: 2019-03-08 22:04:17 »
I am trying to add Garland to the silverdragon boss fight at disc 3 on the original ff9 steam version

and everytime i try to do so, the game softlocks on me, what am i doing wrong then
« Last Edit: 2019-03-09 00:21:04 by Zara9 »

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1473 on: 2019-03-09 11:07:12 »
Adding an enemy in a battle requires a bunch of things. Have you done everything I wrote in that message?

Zara9

  • *
  • Posts: 559
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1474 on: 2019-03-09 12:41:56 »
hey

this is the stuff i do not understand about adding enemies using the ff9 hades workshop

So, about adding enemies, there are a few constraints and some step-by-step method to follow:
1) Copy the enemy you want to add (right-click), then go to the battle where you want to add him and paste.
2) Copy some attacks for that enemy: it is advised to copy/paste attacks from its original battle since then the sequencing and animations will match. You can get any other spell as well though (but then you need to modify the spell sequence or the animations will look weird).
3) Select those new attacks you copied and change their field "Animations" -> select the new enemy.
4) Similarly, select the new enemy and change its "Default Attack" to one of those you added (it's only used for Berserk/Confuse),
5) Modify at least one of the enemy Groups to include the new enemy in it.
6) Click on "Edit Entries", select the last entry named "Object" in the list, Add one entry (it will pop between that Object and Zidane's entry) and change the entry type to 2,
7) Modify the AI script to include an AI for your enemy. You might copy/paste the AI of the original battle sometimes (for regular enemies mainly) but you can also use a very basic AI:

7-a) Function Main_Init
Add a line "InitObject" with the new enemy's entry for the first argument and 128, 129, 130 or 131 for the second (one that is not taken already). If you added more than once of the new enemy inside the enemy group, add more lines like these.
Example: I added 2 Abominations in a battle with 1 Adamantoise and so I added the two last "InitObject" lines
Code: [Select]

Function Main_Init
    InitObject( 1, 128 )
    InitObject( 2, 129 )
    InitObject( 2, 130 )
    return


7-b) Add a function of type 0 (Main) for your enemy's entry (right-click on the function list for that). Nothing absolutly required there so you can just write a single "return" and parse.
Example: I let this example so you don't forget to add a main function nor a "return" line.
Code: [Select]

Function Abomination_Init
    return


7-c) Add a function of type 5 (ATB).
You're not forced to make an AI as complicated as the ones the game has. You can go with something as simple as a "GetRandom" for selecting the attack and basic SV_Target selection.
Example: My Abomination has two different attacks: Silent Slap which is single-target and Fira which is Multi-target. I make it so Silent Slap is used 2/3 of the time and Fira the remaining third.
Code: [Select]

Function Abomination_ATB
    if ( GetRandom % 3 ) {
        set SV_Target = RandomInTeam(SV_PlayerTeam)
        Attack( 4 )
        return
    }
    set SV_Target = SV_PlayerTeam
    Attack( 5 )
    return


7-d) Counter, CounterEx, Loop and Death functions are optionnal.

i did number 1 fine about adding the enemy, i did number 2 fine, but the other stuff i do not understand very well and i tried your very old ff9 steam mod, but it froze at the title screen and nothing happen and when i tried to open up your very old ff9 steam mod on hades it crashed it each time