Jump to content

Pokemon Super Mystery Dungeon And PMD:GTI Research And Utilities


Recommended Posts

Thanks for the advice, I might do that later down the road, but for now I'm coding this project entirely in C, plus with a look up table it makes it quite efficient in terms performance.

No problems.

But, performance for something you load once per launch, ever, and that can be parsed and processed in maybe ~a millisecond with tinyxml is not really much of a concern. High performances are only really important in time critical aspects of the software, like rendering for instance. Performance always comes at a cost too, in readability, maintainability, memory usage, etc.. I mean, the pros vastly outweigh the cons in this case.

Sorry if I sound patronizing/nosy, I don't mean any disrespect, I just wanted to spare you having to find out the hard way why its not such a good idea, and why its almost universally frowned upon.. ^^;

I wrote a lot of generic code, and some games too, and I used to do things like you're doing right now, aka putting data in the code, and using performance as an excuse. And I can tell you in most cases, it was a huge waste of time in the end, even though it seemed like it was quicker and simpler to do that.. I ended up scrapping projects over that, because it had become too much of a bother to "do things right" at that point, and rewriting from scratch was the better way out. But, motivation is a funny thing, and when something like that happens, you're a bit less inclined to go through rewriting everything unless you're getting paid for it.. ^^;

And since you're coding this entirely in C, you'll probably have better things to spend time on than rewriting the stats data loader half-way through IMO.

If you're not too into XML/JSON, you can also do almost the same thing by binding Lua to your C code. It has a nice C API, and you can expose functions and types to the script engine. And Lua has been used a lot to store data directly into tables(Which isn't very clean, but is still better than storing data into your binaries ), as well as scripting game logic, UI, etc.. So if you want to keep things relatively simple, and kill two birds with one stone, you can always just go that way. Script language makes repetitive things like narrative, logic, UI, and etc a breeze as opposed to writing it in native code. Plus Lua is pretty much the fastest script language around(Maybe except python compiled to native C..) especially with JIT compilation. Its also really simple.

But yeah, its a nice project you have, and I hope it'll work out! I just wanted to share some things I learned from big projects like that in the past. But really, just do whatever you want with that advice ^^

Has anyone found out anything about accessing Primal Reversions for Groudon and Kyogre?

I'm really not sure what you mean. You can't just awaken them using the awakening emera ? I works on non-mega capable pokes, and mega-capable pokes. So it seems like a catch-all emera for temporary evolutions and power buffs.

But, honestly, beyond that I don't really care much about legendaries, so I never used one in PSMD. ^^;

Link to comment
Share on other sites

I'm really not sure what you mean. You can't just awaken them using the awakening emera ? I works on non-mega capable pokes, and mega-capable pokes. So it seems like a catch-all emera for temporary evolutions and power buffs.

But, honestly, beyond that I don't really care much about legendaries, so I never used one in PSMD. ^^;

No. It's not that simple; all the Awakening Emera just does is Awaken them; it doesn't put Kyogre and Groudon in the Primal Reversion Status, i.e. that heavy rainfall from Primal Kyogre, for example. My question is, "What accesses their Primal Reversions, or is that a boss-exclusive thing?"

Link to comment
Share on other sites

No. It's not that simple; all the Awakening Emera just does is Awaken them; it doesn't put Kyogre and Groudon in the Primal Reversion Status, i.e. that heavy rainfall from Primal Kyogre, for example. My question is, "What accesses their Primal Reversions, or is that a boss-exclusive thing?"

I quickly scanned a couple of the message_us.bin files, I can't find any mention of Primal/Reversion or such. So most likely they can't undergo Primal Reversion outside of that boss fight.

Link to comment
Share on other sites

I quickly scanned a couple of the message_us.bin files, I can't find any mention of Primal/Reversion or such. So most likely they can't undergo Primal Reversion outside of that boss fight.

Not even if Primal Kyogre and Groudon were hacked into the roster where Groudon and Kyogre reside? I mean, I looked at that data for Pokemon on this board, and apparently they count as separate Pokemon.

But still, that really sucks it's a boss-only thing.

Link to comment
Share on other sites

Is there a list of things to look into / work on? I skimmed the previous pages but didn't find anything obvious.

also my 2 cents: i hate code that is platform dependent, and it seems that the majority of 3ds programs are windows only. Id prefer if stuff was written in python/ruby/java/etc

I'm really not sure what you mean. You can't just awaken them using the awakening emera ? I works on non-mega capable pokes, and mega-capable pokes. So it seems like a catch-all emera for temporary evolutions and power buffs.

But, honestly, beyond that I don't really care much about legendaries, so I never used one in PSMD. ^^;

i don't think the awakening emera works on all pokemon, i used it on my main character and it provided the frontal shield but it didn't evolve it. I haven't tried it on any other pokemon as I've only seen it once in like 45+ hours of gameplay O.o

Link to comment
Share on other sites

Random second post: I am currently unable to do anything as I can't find a decrypted rom of this game.... But I looked at the previous pages of this topic, and I noticed the portraits with the debug looking text on the bottom. just asked my sister who knows japanese, and she confirmed what the text underneath the graphic portriats are:

961.png

awkward, difficult, bitter

3807.png

ウルウル

teary eyed

so the text is probably just debugging information saying what portrait should be displayed, and probably correspond (the number on the image as well) to the list of 'types' that someone posted earlier:

NORMAL

HAPPY

PAIN

ANGRY

THINK

SAD

WEEP

SHOUT

TEARS

DECIDE

GLADNESS

EMOTION

SURPRISE

FAINT

RELEIF

CATCHBREATH

SPECIAL01~16

Link to comment
Share on other sites

Is there a list of things to look into / work on? I skimmed the previous pages but didn't find anything obvious.

Not really. Its been pretty much free for all this far. Though if anyone wants to help figure out the .plb file format, or the script_flow_data.bin file that could be useful.

I'm guessing we still haven't reversed character animations either ? Unless that's covered by ohana already..

There's also disassembling the code.bin that would really help.

also my 2 cents: i hate code that is platform dependent, and it seems that the majority of 3ds programs are windows only. Id prefer if stuff was written in python/ruby/java/etc

Well, a lot of things written using .Net languages can be run in wine. Regular executable built for windows can also be.

Personally I write everything in C++, using portable libraries, just to make things more portable between platforms. I still haven't figured out how to make hassle-free makefiles though, since my mingw and clang setup keeps killing themselves..

i don't think the awakening emera works on all pokemon, i used it on my main character and it provided the frontal shield but it didn't evolve it. I haven't tried it on any other pokemon as I've only seen it once in like 45+ hours of gameplay O.o

it provided the frontal shield but it didn't evolve it.

That's exactly what its supposed to do. Its explained when you use it.

Awakening is a catch-all term. Basically, pokemon that can mega-evolve do mega-evolve, but others just get some buffs.

And I noticed that having a pokemon that can mega-evolve in your party seems to increase the likelihood of stumbling on one.

Link to comment
Share on other sites

So I was looking through the japanese QR Codes for Mystery Gifts, and found these:

Code: 8PH790HJ

Decoded QR bytes:

43 00 01 95 92 23 31 20 41 10 00 40 16 51 00 03

a2 00 fd ed b4 88 6a c2 7c ad 45 6d 8d a6 00 b2

70 81 8f f3 0f f2 8f f1 7f f1 9f f1 0f f2 8f f2

af f0 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11

Code: Y75FXY3R

Decoded QR Bytes:

43 00 01 95 92 23 31 20 41 10 00 40 16 51 00 03

a2 00 fd ed b4 88 6a c2 7c a0 36 1d f7 66 00 b2

70 83 9f f1 7f f1 5f f2 6f f3 8f f3 9f f1 3f f3

2f f0 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11

They strangely seem to be offset by one digit, and then starting around the 34th byte, the code matches in the QR, slightly shifted (11 = 1, 39 = Y, etc). The only part I haven't been able to verify is the chunk of 4 bytes around the 26th byte, which I'm assuming is likely a checksum of some kind.

I figured I'd ask here to see if this is a known encoding already, in which case, I'll be able to see if I can generate QR codes for the existing known Mystery Gifts in the US version.

Link to comment
Share on other sites

So I was looking through the japanese QR Codes for Mystery Gifts, and found these:

Code: 8PH790HJ

Decoded QR bytes:

43 00 01 95 92 23 31 20 41 10 00 40 16 51 00 03

a2 00 fd ed b4 88 6a c2 7c ad 45 6d 8d a6 00 b2

70 81 8f f3 0f f2 8f f1 7f f1 9f f1 0f f2 8f f2

af f0 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11

Code: Y75FXY3R

Decoded QR Bytes:

43 00 01 95 92 23 31 20 41 10 00 40 16 51 00 03

a2 00 fd ed b4 88 6a c2 7c a0 36 1d f7 66 00 b2

70 83 9f f1 7f f1 5f f2 6f f3 8f f3 9f f1 3f f3

2f f0 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11 ec 11

ec 11 ec 11 ec 11 ec 11

They strangely seem to be offset by one digit, and then starting around the 34th byte, the code matches in the QR, slightly shifted (11 = 1, 39 = Y, etc). The only part I haven't been able to verify is the chunk of 4 bytes around the 26th byte, which I'm assuming is likely a checksum of some kind.

I figured I'd ask here to see if this is a known encoding already, in which case, I'll be able to see if I can generate QR codes for the existing known Mystery Gifts in the US version.

Why would they need another checksum though ? Doesn't QR codes use redundancy to deal with error checking ?

Maybe its some kind of crypto key ?

Anyways, I know someone in the first few pages posted a list of codes, but I'm not sure if that's what you're looking for:

http://projectpokemon.org/forums/showthread.php?46904-Pokemon-Super-Mystery-Dungeon-And-PMD-GTI-Research-And-Utilities&p=210769&viewfull=1#post210769

Link to comment
Share on other sites

Why would they need another checksum though ? Doesn't QR codes use redundancy to deal with error checking ?

Maybe its some kind of crypto key ?

The odd part is that it doesn't appear to actually be encrypted whatsoever - the password is sitting there in plaintext. I'm going to try just dropping in a US password to see how it responds, but my assumption is that it won't make much difference.

Link to comment
Share on other sites

Well, I guess crypto key was not the right term on second thought.. ^^; ( I really don't know that much about crypto.. ^^; )

Maybe, its really a checksum/hash, or some kind of validity seal ?

There seems to be some similarities between those two examples. It would be nice if you had more of them though.

And, I wish some of the more wondermail savy people would show up ^^;

Edited by psy_commando
Link to comment
Share on other sites

Well, I guess crypto key was not the right term on second thought.. ^^;

Maybe, its really a checksum/hash, or some kind of validity seal ?

There seems to be some similarities between those two examples. It would be nice if you had more of them though.

I can post at least 15 of them, if it'd help. They all appear identical except for those two sections.

Link to comment
Share on other sites

And they're for the same items/etc ?

And if you got many of them you might want to put them on pastebin.

I'll need to verify if I can find out what the codes actually get - the only QR codes released were for the japanese release, but I found a collection that was QR code+Password that I'm able to parse with a QR reader, so I'll need to correlate the passwords to the items.

Link to comment
Share on other sites

Hello, I just got PSMD decrypted yesterday, I'm really interested in trying to figure out what I'm doing!

I finally got the UI to work without freezing the game, and actually displaying properly!

This is really awesome to me, could you share the files you modified or tell me what you did? Did you have to modify the message.bin or did you just add text within lua?

Also, is there a compiled message.bin decoder? The python one from earlier was giving me some trouble.

Thanks, and sorry, I'm very new to this!

Edit: Sorry for not understanding, but what is SelectChain? Is that a function that was written by chunsoft for this?

Link to comment
Share on other sites

This is really awesome to me, could you share the files you modified or tell me what you did? Did you have to modify the message.bin or did you just add text within lua?

Its not really ready to be used in a playthrough at all. There are some pretty big problems right now.. Detailed in the post you just quoted..

And modifying the message.bin has nothing to do with this. I'm not sure why you insist on text?

Edit: Sorry for not understanding, but what is SelectChain? Is that a function that was written by chunsoft for this?

For what ?

Select chain is just for adding a choice to the basic default choice dialog.

Link to comment
Share on other sites

Its not really ready to be used in a playthrough at all

Oh, I'm not interested in using it for a playthrough, I'm interested in reverse engineering the game and adding my own scripts and stuff, and I figured messing with what you wrote would give me a good starting place in how to insert custom code!

I couldn't get the text program someone wrote (the guy on page 3 I think?) to work, so I'm writing a small one. I'm interested in seeing all of the text and trying to use it to understand some of the script functions that confuse me. I didn't see your documentation when I first read through this post. I have a question about that also, if that's okay!

Select chain is just for adding a choice to the basic default choice dialog.

Ah, Thank you! I thought it did something wildly different :P

Link to comment
Share on other sites

Oh, I'm not interested in using it for a playthrough, I'm interested in reverse engineering the game and adding my own scripts and stuff, and I figured messing with what you wrote would give me a good starting place in how to insert custom code!

You know, it might be much easier to help you if you'd mention what you're trying to do/are looking for, and ask some question. What you've said so far is very vague. :/

And, I didn't do anything very special besides changing the content of the lua callback functions with stuff I stumbled on in other lua files and put together. The menu is the same as the one used for gold ingots, and I used the function to set the hero and partner pokemon id from the value entered in the menu.

 repeat
   WINDOW:CloseMessage()
   WINDOW:SysMsg("Select _ Pokemons ?(Menu#2)")
   WINDOW:SelectStart()
   WINDOW:SelectChain("Done", 0)
   WINDOW:SelectChain("Set Hero pkid", 1)
   WINDOW:SelectChain("Set Partner pkid", 2)
   WINDOW:DefaultCursor(0)
   local id = WINDOW:SelectEnd(MENU_SELECT_MODE.DISABLE_CANCEL)

   if id == 1 then
     WINDOW:SysMsg( "--- Changing _ Hero _ pokemon _ id ---" )
     local oldpokemonid = SymAct("HERO"):GetIndex()
     local menu      = MENU:CreateNumericMenuWindow(ScreenType.A)
     menu:SetLayoutRect(Rectangle(96, 80, 132, 84))
     menu:SetPlace(3)
     menu:SetDigit(3)
     menu:SetStartNum(initval)
     menu:SetType(NUM_MENU_TYPE.TYPE_DIGIT_ON)
     menu:SetTextOffset(24, 40)
     function menu:decideAction()
       charname = self:GetSettingData()
       GROUND:SetHero(charname, 0)
       CHARA:ReloadHeroPartner()
       self:Close()
     end
     function menu:cancelAction()
       charname = oldpokemonid
       GROUND:SetHero(charname, 0)
       CHARA:ReloadHeroPartner()
       self:Close()
     end
     menu:Open()
     menu:SetCaption("Pokemon ID")
     MENU:SetFocus(menu)
     MENU:WaitClose(menu)

   elseif id == 2 then
     WINDOW:SysMsg( "--- Changing _ Partner _ pokemon _ id ---" )
     local oldpokemonid = SymAct("HERO"):GetIndex()
     local menu      = MENU:CreateNumericMenuWindow(ScreenType.A)
     menu:SetLayoutRect(Rectangle(96, 80, 132, 84))
     menu:SetPlace(3)
     menu:SetDigit(3)
     menu:SetStartNum(initval)
     menu:SetType(NUM_MENU_TYPE.TYPE_DIGIT_ON)
     menu:SetTextOffset(24, 40)
     function menu:decideAction()
       pertnername = self:GetSettingData()
       GROUND:SetPartner(pertnername, 0)
       CHARA:ReloadHeroPartner()
       self:Close()
     end
     function menu:cancelAction()
       pertnername = oldpokemonid
       GROUND:SetPartner(pertnername, 0)
       CHARA:ReloadHeroPartner()
       self:Close()
     end
     menu:Open()
     menu:SetCaption("Pokemon ID")
     MENU:SetFocus(menu)
     MENU:WaitClose(menu)
   end
 until id == 0

Its really quick and dirty. I also re-used the original script-local variable names, so don't be surprised if there are horrible typos or if the names makes no sense, that's chunsoft's own weirdness. Also all functions that write text strip white spaces from string literals. Still not too sure why because strings returned by the API's functions, or string UUIDs seems to work fine.

Also, I was holding back on releasing that, because there is most likely a better way to do this. And I think using the setpartner and sethero functions do some extra junk in the background which causes issues..

I couldn't get the text program someone wrote (the guy on page 3 I think?) to work, so I'm writing a small one. I'm interested in seeing all of the text and trying to use it to understand some of the script functions that confuse me. I didn't see your documentation when I first read through this post. I have a question about that also, if that's okay!

Feel free to ask questions. That's pretty much what research threads are for.

Link to comment
Share on other sites

You know, it might be much easier to help you if you'd mention what you're trying to do/are looking for, and ask some question. What you've said so far is very vague. :/

Oh, I wasn't looking for specific help. I was just hoping to see what you wrote to see if I could mess with it and learn that way. I don't know much about lua or about the engine, and I learn best by looking at what others have done and messing around with it.

Also, I was holding back on releasing that, because there is most likely a better way to do this. And I think using the setpartner and sethero functions do some extra junk in the background which causes issues..

Sorry, I was just asking so I could see an example of something that didn't immediately crash

Link to comment
Share on other sites

Oh, I wasn't looking for specific help. I was just hoping to see what you wrote to see if I could mess with it and learn that way. I don't know much about lua or about the engine, and I learn best by looking at what others have done and messing around with it.

Sorry, I was just asking so I could see an example of something that didn't immediately crash

Well, you're saying you're new to this, but you seemed really specific about wanting that hero/partner select code, while there's the entire game script as example already. So, I assumed you might have been looking at something specific, or some pointers ? Because, its probably best to not reinvent the wheel and go through researching everything on your own.

Its alright.

Its just that I'm pretty sure I could help you get started more than that crappy code snippet ^^;

Not to mention that at the same time I'd have an excuse to make an info dump in here. xD

Link to comment
Share on other sites

Oh I see what you mean! It was just that you're the only person I've seen to successfully inject some amount of menu code! The lua that I was reading through was confusing (it had a whole bunch of other things sprinkled through it) so everything I tried to copy would fail because I couldn't find the write parts that actually made it work! Meanwhile your code worked (It didn't really have anything to do with the fact that it was starter pokemon code!) so I figured it wouldn't have much unnecessary stuff so I'd be able to read it better! I guess asking for it was my poorly worded attempt at asking for pointers :^)

But now I have what you wrote so I can see the bare basics of what's needed to make a menu and I can modify it to learn! I'm probably going to devote most of my time to taking apart the scripting engine and seeing if I can do anything meaningful with it!

I would never say no to a useful info dump tho :^)

Also, I have a question about strings! I was looking through your documentation of the message.bin format and I'm a little confused. All SIR0 files have the pointer table at the end of the file correct? but the sub header (of the message.bin file) has a pointer to each string doesn't it? so what's the point of the pointer table at the end? I'm probably being confusing with how I write this, mostly because I don't really think I know enough about the format to even ask questions haha

Thank you!

Link to comment
Share on other sites

Oh I see what you mean! It was just that you're the only person I've seen to successfully inject some amount of menu code! The lua that I was reading through was confusing (it had a whole bunch of other things sprinkled through it) so everything I tried to copy would fail because I couldn't find the write parts that actually made it work! Meanwhile your code worked (It didn't really have anything to do with the fact that it was starter pokemon code!) so I figured it wouldn't have much unnecessary stuff so I'd be able to read it better! I guess asking for it was my poorly worded attempt at asking for pointers :^)

I'm probably also the only person that tried it then, because its really easy. ^^;

And a lot of the code chunsoft made is modifying the global state of some objects. Its pretty dirty and confusing, because those objects needs to be in a particular state to work as expected.

But now I have what you wrote so I can see the bare basics of what's needed to make a menu and I can modify it to learn! I'm probably going to devote most of my time to taking apart the scripting engine and seeing if I can do anything meaningful with it!

Well, some menus will refuse to work when using the same method though. I'm still not 100% sure what might be the problem. And some make heavy use of the "flow system".

The "flow system" is probably the most annoying thing in the scripts.. Its basically some kind of bastardized and overcomplicated state machine.

Also, a lot of things were moved from the script right into the game code after GTI. So, we don't have all that much control on the game this far. Scripts are only, for the most part, filled with callback functions called by the game code. Its also possible that those callbacks are defined in some of the bin files laying around the script folder and etc.. I'm still not sure. We'll need more research into the plb, and script data files.

Interestingly, a lot of the flowsys bin files have strings containing numbers and constants, and even some strange repeating patterns of bytes that look like opcodes almost. Which might imply they're used by the game code to work/interface with the scripts.

Also, I have a question about strings! I was looking through your documentation of the message.bin format and I'm a little confused. All SIR0 files have the pointer table at the end of the file correct? but the sub header (of the message.bin file) has a pointer to each string doesn't it? so what's the point of the pointer table at the end? I'm probably being confusing with how I write this, mostly because I don't really think I know enough about the format to even ask questions haha

Thank you!

You mean the encoded pointer list ? Because that's just used to translate pointer offsets in the file to offsets in memory when the file's content is loaded.

Also, the notes I have up are for GTI. In PSMD, they put all the string db files into a big FARC archive.

And you're welcome.

Edited by psy_commando
Link to comment
Share on other sites

Its pretty dirty and confusing, because those objects needs to be in a particular state to work as expected.

Ah, That might be causing me issue. I'm in a pretty weird place to have a menu randomly pop up!

The flow system sounds awful, but I'll start to look through and see if I understand anything. The flowsys bin files sound promising though.

You mean the encoded pointer list ? Because that's just used to translate pointer offsets in the file to offsets in memory when the file's content is loaded.

Also, the notes I have up are for GTI. In PSMD, they put all the string db files into a big FARC archive.

Ah that makes sense! Also, the second part makes even more sense.

Either way, I still can't seem to get the text using the python god that someone wrote way earlier. The Git says it's for PSMD so I know I'm not making that mistake twice :^)

Having never worked with python, it's probably causing me some issue. Did it work for you? I keep getting this

Link to comment
Share on other sites

Ah, That might be causing me issue. I'm in a pretty weird place to have a menu randomly pop up!

If you'd give some more details I could probably say something helpful. ^^;

Either way, I still can't seem to get the text using the python god that someone wrote way earlier. The Git says it's for PSMD so I know I'm not making that mistake twice :^)

Having never worked with python, it's probably causing me some issue. Did it work for you? I keep getting this

I haven't tried it. I've been mostly looking up the very few strings I needed to look up by UUID with an hex editor. Besides, I don't want to have any excuses keeping me from finishing my 90% finished string parser I've been putting off finishing constantly for dumb reasons.. ^^;

(Its funny however, because literally everyone in this thread made their own string parser xD And I began mine when I was working on GTI, even before making this thread ^^; )

Did you try to run this with python 2.7 or the latest?

Python development is in a weird spot.. There's a split between 2.7 and higher. So if something doesn't work with anything higher than 2.7, try it with 2.7.

I'm not a python expert though. I barely even skimmed the surface.

Link to comment
Share on other sites

If you'd give some more details I could probably say something helpful. ^^;

Thanks! That piece of code that I wrote was in a spot I know is dumb, it was just the only spot that I knew I could trigger in game (I don't want to delete my save!) I'll try to find other places that are more receptive to menus, that's a fun part of the experimen

Did you try to run this with python 2.7 or the latest?

Python development is in a weird spot.. There's a split between 2.7 and higher. So if something doesn't work with anything higher than 2.7, try it with 2.7.

I'm not a python expert though. I barely even skimmed the surface.

Ah, I tried the latest. I'll download 2.7 and give it a shot, thanks! If all else fails, I'll probably stick with hex and then get tired of it and write a parser :^)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...