What's new

[WIP - Full] [RJ181931] Succubus Rhapsodia (English) -- ON HIATUS; UP FOR ADOPTION 2018 --


Snesruler

Jungle Girl
Joined
Feb 1, 2012
Messages
33
Reputation score
2
Re: [RJ181931] Succubus Rhapsodia (English)

Thanks a lot for working on translations for this game. Even "simple" things like menus and stats being translated is a huge deal - it makes the game way more convenient to play
 

Mimi

Jungle Girl
Joined
Apr 29, 2012
Messages
33
Reputation score
3
Re: [RJ181931] Succubus Rhapsodia (English)

Not that I know of. If there's one, I'd love to to extract CommonEvents.rxdata to a workable from... And be able to search a command/string in maps and events.
There are extraction/translation tools out there, some do something similar, but I never bothered to look at their source code seriously... Might be a good starting point?

I know for a fact (though way beyond what I'm able of) RPGM editor allows for this; you might also want to look into the "RGSS Built-in Functions".
However, I just don't know how to hook an 'each' to every single piece of content ... And don't have the time to look into it (...and probably, neither the brains xD).

PS: I'll delete the 'talk' stuff for now, 'cos it takes way too long to do a SHIFT+CTRL+F script search :( Heck, 78*5000 = 390K lines :eek:
I managed to dump and repack Scripts.rxdata.
See the tool in the attachements.
EDIT: .zip too big again :

The interface has two parts, top is to extract, bottom is to repack (it should be straightforward).
You can drag & drop Scripts.rxdata or the folder containings the extracted files instead of using the buttons.

Instructions
Extracted scripts will have a string added in front of their names (a number followed by '-'). You can replace it by whatever you want, but it must end by the character '-'.
When you repack, the files will be put in alphabetical order in the .rxdata
Example :
Code:
000 - 初期設定.rb
001 - Array(メソッド追加).rb
002 - RPG;;Cache.rb
003 - RPG;;SDB(種族値・設定用).rb
will result in this order :
Code:
初期設定
Array(メソッド追加)
RPG:Cache
RPG::SDB(種族値・設定用)
in the script list in RPG maker XP.

If you add a new file inbetween :
Code:
000 - 初期設定.rb
000a- my new script.rb
001 - Array(メソッド追加).rb
002 - RPG;;Cache.rb
003 - RPG;;SDB(種族値・設定用).rb
it will result in :
Code:
初期設定
my new script
Array(メソッド追加)
RPG:Cache
RPG::SDB(種族値・設定用)
It should be easy that way, hopefully.

About the rxdata structure
Those files use the Ruby's Marshal format, used to serialize object.
In the case of Scripts.rxdata, it contains a main array, storing multiple arrays (one by script).
Those arrays store :
* An unique ID stored in an integer. The ID seems to be random.
* The script name (UTF-8-encoded)
* The script content, compressed with zlib

Next, I will try to see what I can do with CommonEvents.rxdata or the maps. It should be easier than the scripts, at least.

EDIT:
By the way, I found a hidden unused script in the array of デバッグ対策 in the .rxdata.
Code:
$: << File.expand_path("./")
if FileTest.exist?("SQ_Patch.rb")
  require "SQ_Patch.rb"
end
I have no idea how it ended here. Even more weird, it was not compressed like the other scripts.
 
Last edited:

Strange

Demon Girl Pro
Joined
Jul 24, 2014
Messages
1,256
Reputation score
487
Re: [RJ181931] Succubus Rhapsodia (English)

By the way, I found a hidden unused script in the array of デバッグ対策 in the .rxdata.
Code:
$: << File.expand_path("./")
if FileTest.exist?("SQ_Patch.rb")
  require "SQ_Patch.rb"
end
I have no idea how it ended here. Even more weird, it was not compressed like the other scripts.
Nostalgic! This is a line from the original SQ(s) script, which allowed the use of an external SQ_Patch.rb file for subsequent patches and mods. (inactive in SR, indeed)

I guess you know better than me, but here's the base def of common events, if it helps:
Code:
module RPG

  class CommonEvent
    def initialize
      @id = 0
      @name = ""
      @trigger = 0
      @switch_id = 1
      @list = [RPG::EventCommand.new]
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :trigger
    attr_accessor :switch_id
    attr_accessor :list
  end

  #and the actual array which is of interest:
  class EventCommand
    def initialize(code = 0, indent = 0, parameters = [])
      @code = code
      @indent = indent
      @parameters = parameters
    end
    attr_accessor :code
    attr_accessor :indent
    attr_accessor :parameters
  end
  
end
How their @ids are organized is still a mystery to me...

I don't have much time to spare as of late, so forgive the lack of news :)
 

Mimi

Jungle Girl
Joined
Apr 29, 2012
Messages
33
Reputation score
3
Re: [RJ181931] Succubus Rhapsodia (English)

I guess you know better than me, but here's the base def of common events, if it helps:
Code:
module RPG

  class CommonEvent
    def initialize
      @id = 0
      @name = ""
      @trigger = 0
      @switch_id = 1
      @list = [RPG::EventCommand.new]
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :trigger
    attr_accessor :switch_id
    attr_accessor :list
  end

  #and the actual array which is of interest:
  class EventCommand
    def initialize(code = 0, indent = 0, parameters = [])
      @code = code
      @indent = indent
      @parameters = parameters
    end
    attr_accessor :code
    attr_accessor :indent
    attr_accessor :parameters
  end
  
end
How their @ids are organized is still a mystery to me...

I don't have much time to spare as of late, so forgive the lack of news :)
I already did a simple dump of the content earlier and I got this :


I need to figure out how to make it easily modifiable now.
 
Last edited:

krisslanza

Lurker
Joined
Dec 6, 2008
Messages
1,121
Reputation score
52
Re: [RJ181931] Succubus Rhapsodia (English)

Keep up the good work! I keep hoping to see a new translation patch with each post but hahahaha.

Seems you're all laying the foundation for the work to be even easier later on though!
 

Mimi

Jungle Girl
Joined
Apr 29, 2012
Messages
33
Reputation score
3
Re: [RJ181931] Succubus Rhapsodia (English)

Here we go, CommonEvents.rxdata in a 'readable' format :

Tell me what you think of the syntax. I tried to make it easy on the eye.

There is one problem left that I need to solve.
Some commands ('when' and 'move' commands, particularly) use a link to another object in the file and they don't seem to point to anything.
Either there is an error in my code or there is something weird going on.

Next, I just need to write something to compile the text file into a rxdata and it's done.
 

Strange

Demon Girl Pro
Joined
Jul 24, 2014
Messages
1,256
Reputation score
487
Re: [RJ181931] Succubus Rhapsodia (English)

Wow, that looks really good! Congrats!
If you have a way to re-inject the new strings into the rxdata file without breaking anything, you'll have a very handy tool. As it stands now, it's already great to have the commonevents in 1 place, instead of in 255 different, unsearchable RPGM boxes :/

My uneducated guess for the 'objlinks', if we are looking at the same things: could it be that they are created & defined in the event itself, therefore NOT linking to anything external?

Something like this (extracted & truncated from your sheet):
Code:
[Label]						"2番"
[Message]					"\name[\v[2]]\_"    #Speaker
[Message+]					"What is a woman's best weapon?"
[Choice]					{"Her lips", "Her hands", "Her chest", "Her butt"}, 0   # 0 for "cannot cancel"
			# according to input:
			# "Her lips"  -> objlink(218)
			# "Her hands" -> objlink(219)
			# "Her chest" -> objlink(220)
			# "Her butt"  -> objlink(221)
		
[When]						0, objlink(218)
	[Message]					"\name[\v[2]]\_"
	[Message+]					"Nothing like a good kiss!\H\.\."
	[Message+]					"(Hero will get 【Mouth fetish】)\n"
	[Choice]					{"Yes", "No"}, 2   # 2 for "choose 'No'/237 if cancel"?
				# "Yes" -> objlink(236)
				# "No"  -> objlink(237)
	[When]						0, objlink(236)
		[Script]					"$game_actors[101].gain_ability("Mouth fetish")"
		[Empty]
	[When]						1, objlink(237)
		[Message]					"\name[\v[2]]\_"
		[Message+]					"Ah ah, no need to act shy\H"
		[Jump]						"2番"   # back to selection
				
				
				
				
				
				
				
[Move Route]				-1, obj(RPG::MoveRoute = @list = {
	obj(RPG::MoveCommand = @parameters = {}, @code = 37),        #objlink(474)
	obj(RPG::MoveCommand = @parameters = {3}, @code = 29),       #objlink(476)
	obj(RPG::MoveCommand = @parameters = {}, @code = 12),        #objlink(478)
	obj(RPG::MoveCommand = @parameters = {4}, @code = 29),       #objlink(480)
	obj(RPG::MoveCommand = @parameters = {}, @code = 0)},
	@skippable = False , @repeat = False )
[Move Command]				objlink(474)
[Move Command]				objlink(476)
[Move Command]				objlink(478)
[Move Command]				objlink(480)
[Wait for Movevement]
[Move Route]				-1, obj(RPG::MoveRoute = @list = {
	obj(RPG::MoveCommand = @parameters = {}, @code = 38),         #objlink(498) 
	obj(RPG::MoveCommand = @parameters = {}, @code = 0)},
	@skippable = False , @repeat = False )
[Move Command]				objlink(498)
[Empty]
The "When" command usually creates a conditional branch based on a previous input ("Yes/no", "HP>50%", "have 1+ candy in inventory"...).
There are different 'move' commands in RPGM, but I guess you meant the "move player icon according to this route" command.
 

Mimi

Jungle Girl
Joined
Apr 29, 2012
Messages
33
Reputation score
3
Re: [RJ181931] Succubus Rhapsodia (English)

Wow, that looks really good! Congrats!
If you have a way to re-inject the new strings into the rxdata file without breaking anything, you'll have a very handy tool. As it stands now, it's already great to have the commonevents in 1 place, instead of in 255 different, unsearchable RPGM boxes :/

My uneducated guess for the 'objlinks', if we are looking at the same things: could it be that they are created & defined in the event itself, therefore NOT linking to anything external?

Something like this (extracted & truncated from your sheet):
Code:
[Label]						"2番"
[Message]					"\name[\v[2]]\_"    #Speaker
[Message+]					"What is a woman's best weapon?"
[Choice]					{"Her lips", "Her hands", "Her chest", "Her butt"}, 0   # 0 for "cannot cancel"
			# according to input:
			# "Her lips"  -> objlink(218)
			# "Her hands" -> objlink(219)
			# "Her chest" -> objlink(220)
			# "Her butt"  -> objlink(221)
		
[When]						0, objlink(218)
	[Message]					"\name[\v[2]]\_"
	[Message+]					"Nothing like a good kiss!\H\.\."
	[Message+]					"(Hero will get 【Mouth fetish】)\n"
	[Choice]					{"Yes", "No"}, 2   # 2 for "choose 'No'/237 if cancel"?
				# "Yes" -> objlink(236)
				# "No"  -> objlink(237)
	[When]						0, objlink(236)
		[Script]					"$game_actors[101].gain_ability("Mouth fetish")"
		[Empty]
	[When]						1, objlink(237)
		[Message]					"\name[\v[2]]\_"
		[Message+]					"Ah ah, no need to act shy\H"
		[Jump]						"2番"   # back to selection
				
				
				
				
				
				
				
[Move Route]				-1, obj(RPG::MoveRoute = @list = {
	obj(RPG::MoveCommand = @parameters = {}, @code = 37),        #objlink(474)
	obj(RPG::MoveCommand = @parameters = {3}, @code = 29),       #objlink(476)
	obj(RPG::MoveCommand = @parameters = {}, @code = 12),        #objlink(478)
	obj(RPG::MoveCommand = @parameters = {4}, @code = 29),       #objlink(480)
	obj(RPG::MoveCommand = @parameters = {}, @code = 0)},
	@skippable = False , @repeat = False )
[Move Command]				objlink(474)
[Move Command]				objlink(476)
[Move Command]				objlink(478)
[Move Command]				objlink(480)
[Wait for Movevement]
[Move Route]				-1, obj(RPG::MoveRoute = @list = {
	obj(RPG::MoveCommand = @parameters = {}, @code = 38),         #objlink(498) 
	obj(RPG::MoveCommand = @parameters = {}, @code = 0)},
	@skippable = False , @repeat = False )
[Move Command]				objlink(498)
[Empty]
The "When" command usually creates a conditional branch based on a previous input ("Yes/no", "HP>50%", "have 1+ candy in inventory"...).
There are different 'move' commands in RPGM, but I guess you meant the "move player icon according to this route" command.
Actually, I solved the problem, there was an error in my code and it failed to find the linked object.
In the Ruby's Marshal format, symbol links and object links are used to reduce the size of the file. Instead of having the two same symbols, you have the symbol and a link to it.
For example, every symbols in my dump are symbol links, except the first one. '@parameters' is 11 bytes long but a link is only 1 byte (it's an ID). So, you save 10 bytes everytime '@parameters' is mentioned in the file by having a link instead. I'm not sure if I explained it properly or not.

In our current case, the "when" commands link to others RPG::EventCommand or RPG::MoveCommand. I'm not sure why one or the other.
Anyway, I assume that it will only be used to edit the strings, not the event itself, so I won't dive too deeply into this.
 
Last edited:

krisslanza

Lurker
Joined
Dec 6, 2008
Messages
1,121
Reputation score
52
Re: [RJ181931] Succubus Rhapsodia (English)

Looks like 1.12 is released, and seems its "part 2"?
 

Mimi

Jungle Girl
Joined
Apr 29, 2012
Messages
33
Reputation score
3
Re: [RJ181931] Succubus Rhapsodia (English)

I bit later that I envisaged (I was a bit busy), but I finished the tool to dump/compile CommonEvents.rxdata.

Drop CommonEvents.rxdata onto dump.exe to extract the content.
Do the same with the dump onto compile.exe to make a new CommonEvents.rxdata.
Be careful of accidental overwrites, it doesn't ask for a confirmation if the file already exists.
Always make a backup.

It may have some bugs left (hopefully not). Please report it to me if there is a big problem.
I would recommend to only edit strings to avoid any issue.

Note 1 : Strings are delimited by the character `, so don't use it in your strings. Obviously, ' is fine, it's not the same character.
I couldn't use " or something commonly used without making a more complicated parser, so I choose this character.

The notepad folder in the .zip has a user-defined language file for notepad++. It highlights the ` characters.
Feel free to modify it to your liking.

Note 2 : indentation is important, I don't recommand to remove the tabulations at the beginning of a line.
 

Attachments

OP
SFrame

SFrame

Sex Demon
Joined
Aug 27, 2011
Messages
296
Reputation score
120
Re: [RJ181931] Succubus Rhapsodia (English)

Looks like 1.12 is released, and seems its "part 2"?
Post title, "バグ報告記事 part2"
- as in "Bug Reports, part 2", yes.
- the v1.12 patch is mostly bug fixes of the talk folder dialogues added by v1.11; nothing else of particular note that I see.

I bit later that I envisaged (I was a bit busy), but I finished the tool to dump/compile CommonEvents.rxdata.

Drop CommonEvents.rxdata onto dump.exe to extract the content.
Do the same with the dump onto compile.exe to make a new CommonEvents.rxdata.
Be careful of accidental overwrites, it doesn't ask for a confirmation if the file already exists.
Always make a backup.

It may have some bugs left (hopefully not). Please report it to me if there is a big problem.
I would recommend to only edit strings to avoid any issue.

Note 1 : Strings are delimited by the character `, so don't use it in your strings. Obviously, ' is fine, it's not the same character.
I couldn't use " or something commonly used without making a more complicated parser, so I choose this character.

The notepad folder in the .zip has a user-defined language file for notepad++. It highlights the ` characters.
Feel free to modify it to your liking.

Note 2 : indentation is important, I don't recommand to remove the tabulations at the beginning of a line.


MAJUTSU SHI DA!!

I've been looking for a commonevents extraction tool like yours for a while - anything to avoid having to ctrl+f through the awful editor. It's so far proven immensely helpful for versioning; just finished getting my copy harmonized with the v1.12 patch.

Thanks, Mimi!
 

Mimi

Jungle Girl
Joined
Apr 29, 2012
Messages
33
Reputation score
3
Re: [RJ181931] Succubus Rhapsodia (English)

I've been looking for a commonevents extraction tool like yours for a while - anything to avoid having to ctrl+f through the awful editor. It's so far proven immensely helpful for versioning; just finished getting my copy harmonized with the v1.12 patch.

Thanks, Mimi!
You're welcome, it was a fun little project for me.
I'm not sure if it will try to do the same with the maps yet, it depends if I have the time and if I'm bored.
I may need to improve the parser, or add more error detections, at least. I used the simplest possible approach to read the commands parameters. For example, if you write "objlink something (" instead of "objlink(", it should work, because I don't check what's between the keyword and the bracket.
It's why I recommend to only edit the strings.
 
OP
SFrame

SFrame

Sex Demon
Joined
Aug 27, 2011
Messages
296
Reputation score
120
Re: [RJ181931] Succubus Rhapsodia (English)

You're welcome, it was a fun little project for me.
I'm not sure if it will try to do the same with the maps yet, it depends if I have the time and if I'm bored.
I may need to improve the parser, or add more error detections, at least. I used the simplest possible approach to read the commands parameters. For example, if you write "objlink something (" instead of "objlink(", it should work, because I don't check what's between the keyword and the bracket.
It's why I recommend to only edit the strings.
Quirks considered (the objlinks, the ` signs), this is till a quantum leap above what we had to deal with before; it's more than enough for me xD.

I'd be very interested in a map rxdata extractor too, if you decide to make one. Translating map-bound event dialogues haven't been too much of a problem, but it's just as tedious to have to click each text entry to read and edit them. Long live Notepad++! lol
 

krisslanza

Lurker
Joined
Dec 6, 2008
Messages
1,121
Reputation score
52
Re: [RJ181931] Succubus Rhapsodia (English)

How is the translation project going? Its been quiet for a bit. Anything people need help with, or simply a case of life and stuff going on?
 

Snesruler

Jungle Girl
Joined
Feb 1, 2012
Messages
33
Reputation score
2
Re: [RJ181931] Succubus Rhapsodia (English)

How is the translation project going? Its been quiet for a bit. Anything people need help with, or simply a case of life and stuff going on?
Check the top portion of the first post
 

krisslanza

Lurker
Joined
Dec 6, 2008
Messages
1,121
Reputation score
52
Re: [RJ181931] Succubus Rhapsodia (English)

Check the top portion of the first post
Holy cow. I never thought to check the OP. I'm so used to posts announcing things, hahaha. I feel really dumb now, thanks for letting me know!
 

CD008

Jungle Girl
Joined
Jul 20, 2012
Messages
16
Reputation score
0
Re: [RJ181931] Succubus Rhapsodia (English)

I'm happy this hasn't been dropped, keep up the good work SFrame!
 
OP
SFrame

SFrame

Sex Demon
Joined
Aug 27, 2011
Messages
296
Reputation score
120
Re: [RJ181931] Succubus Rhapsodia (English)

I'm happy this hasn't been dropped, keep up the good work SFrame!
So long as I still draw breath, none of my children shall be laid to perish.

They just might get starved a little... :p

p.s. (Allegory. In other words, I'm stubborn; I never intend to drop anything I've had a hand in starting. So far, this holds true.)
 
Last edited:

Williamtheshatner

Jungle Girl
Joined
Jul 29, 2016
Messages
200
Reputation score
58
Re: [RJ181931] Succubus Rhapsodia (English)

I just wanted to say thanks for doing this. You're doing gods work, if the particular god in question is a love god (although lust is more likely, considering the subject material).

Joking aside, thanks for doing this. My lack of an ability to read moonrunes makes these kinds of games harder to enjoy, and as I know a translator in real life (Russian, to be specific) I can understand how hard it is to do something like this. So, kudos to you, and thanks a ton.
 

krisslanza

Lurker
Joined
Dec 6, 2008
Messages
1,121
Reputation score
52
Re: [RJ181931] Succubus Rhapsodia (English)

Curse you Lilitales! :p
Guess we'll have something to look forward to next year, at least!
 
Top