Qedit Help

Discussion in 'Guides' started by Maverick, Jul 8, 2017.

  1. Maverick

    Maverick Member

    I know that we're encouraged to ask questions in the "creating a quest" topic, but I anticipate asking a handful (...or dozens...) of questions regarding Qedit, and I don't want to clutter that thread too much. And people that check this thread out may have the same questions as me, so it could help to have this thread around. Feel free to delete it if you disagree.

    Question 1: Are there maps for the ID #s of doors—besides forest 1 & 2—available somewhere?
     
    Last edited: Jul 8, 2017
  2. Matt

    Matt Administrator Staff Member

    Location:
    Wigan, England
    Guildcard:
    42000044
    The ID numbers of doors are whatever you set them to (Switch ID parameter). All maps apart from forest just use basic numbers. If set to -1, it will always be open, if set to 0 or above, it will only be open if that number is unlocked in the events or a switch is pressed with the same Switch ID.
     
    Maverick likes this.
  3. tofuman

    tofuman Administrator Staff Member

    the forest doors are made up of 2 byte values. Its just qedit treats it as 1 value. So a simple method would be to convert the value to hex in calc.exe. The first byte is the number on the door. the 2nd is the door ID then switch back to decimal and put that in the door id.
     
  4. Sassmeister

    Sassmeister Distant Worlds

    Location:
    Thirdspace
    Guildcard:
    42004406
    Novice here

    I'm picking at preset Sega quests and learning little by little how to work some things in Qedit. What I can't seem to understand though are what you can use Object Room IDs for. I feel it's simple but I'm not entirely sure. Help?
     
  5. Matt

    Matt Administrator Staff Member

    Location:
    Wigan, England
    Guildcard:
    42000044
    Object Room IDs are collision objects that "move" the player from one room to another. They are used in Forest and CCA specifically. If you look at Forest's rooms, it's just a 4x4 grid that doesn't really line up to the actual room layouts at all (they fixed this in Episode 4, but Episode 1/2 still suffer from it).

    What you need to do is place Object Room IDs on the doors that connect two rooms then change the parameters of before/after to be the two rooms on each side of the door.

    The easiest way to do all this is just import the object file from free roam SEGA maps and save yourself the headache.
     
  6. Sassmeister

    Sassmeister Distant Worlds

    Location:
    Thirdspace
    Guildcard:
    42004406
    Ah, okay. Yeah I see it. Thanks.

    My next question would be about the doors. Seeing your post about how to keep them open versus locked until events/switches give the say so, I tried it and then viewed it through the 3D viewing. I've seen the doors be locked in other quests but it's not working out for me. Would I just have to trust the 'Switch ID' value despite the door being green?

    EDIT: I think I found out what the issue might be ^^
     
    Last edited: Jun 8, 2019
  7. Sassmeister

    Sassmeister Distant Worlds

    Location:
    Thirdspace
    Guildcard:
    42004406
    omg the scripting part looks so overwhelming X_X

    Could someone possibly tell me what the more common ones are? Or perhaps what they mean? Just looking at other quest scripts is like looking at a wall of Gaulish Text '-';;
     
  8. Sodaboy

    Sodaboy Administrator Staff Member

    Location:
    Benicia, California
    Guildcard:
    11111111
    If you're talking about the more common opcodes, I'd suggest visiting https://qedit.info/index.php?title=OPCodes

    For a good number of the opcodes, you can click on one and get a description as well as an example of use.
     
  9. Sassmeister

    Sassmeister Distant Worlds

    Location:
    Thirdspace
    Guildcard:
    42004406
    Will look into it. Thanks, Boss :3
     
  10. Matt

    Matt Administrator Staff Member

    Location:
    Wigan, England
    Guildcard:
    42000044
    When looking at other quests, I recommend looking at the Dreamcast quests as they tend to have the simplest scripts. They don't use some of the more advanced GC/BB OPCodes and tend to also be in function order.

    Examples of these would Mop-Up Operation, Lost Episode 1 (but not Hell Pallasch, that's a BB quest) and Endless Nightmare.
     
  11. Sassmeister

    Sassmeister Distant Worlds

    Location:
    Thirdspace
    Guildcard:
    42004406
    Thanks for all the pointers ^^

    Hm, It seems 'get_difflvl' isn't available to view on the wiki. Looking at EN4 atm and I'm curious as to what it does? Apologies for the constant shouts for help >_>

    Looks like something that loads another level or something
     
  12. Sodaboy

    Sodaboy Administrator Staff Member

    Location:
    Benicia, California
    Guildcard:
    11111111
  13. Sassmeister

    Sassmeister Distant Worlds

    Location:
    Thirdspace
    Guildcard:
    42004406
    LOL

    Okay, yeah. I'm dumb. Glossed right over the '2' in that OPcode. Thanks
     
  14. Sassmeister

    Sassmeister Distant Worlds

    Location:
    Thirdspace
    Guildcard:
    42004406
    Need help with 'leti' OPcodes. It says to use it for inserting values for registers but I'm not sure I'm really looking at when it comes to a finished script: Especially when I see a long string of them. Other than that I think I'm mostly set ^^
     
  15. Sodaboy

    Sodaboy Administrator Staff Member

    Location:
    Benicia, California
    Guildcard:
    11111111
    They're just like x86 assembler commands for setting registers. Ex. mov eax, edx (Set eax register to the value in edx) or mov eax, 12345678h (set register to 12345678 in hex)

    The two equivalents in PSO assembly would be like let R1, R2 (set register 1 to the value in register 2) or leti R1, 12345678 (set register 1 to hex value 12345678h)

    In PSO assembly, though, when copying registers, we use let instead of leti. leti is only used for setting integer values. (Hence the "i" at the end.)

    When you see a long string of them, it's usually setting a number of registers in sequential order and then calling a command with the base register.

    Example, when item creates happen, usually 12 registers are leti (ex: leti R61-R72) or set in succession then item_create2 is called with the initial register. (R61)

    Each register holds a byte of the new item to create. And item_create2 reads all 12 then makes the call to the server to create the item.

    This is just one example.
     

Share This Page