To get the FEXP starter kit, click here. If you need help with using the engine, my site is located here. We offer support and the latest tutorials on using the engine, since the original developer abandoned it.
If you want to make a Fire Emblem game and hacking a rom isn't for you, FEXP is the only reasonable alternative.
This post has been edited by Klokinator: Feb 4 2013, 04:14 PM
I'm pinning this topic (hopefully it's okay that I do xD (I mean, the Zelda Project is pinned, right?)), because it obviously needs to be read more and could be very beneficial for RMXP users I'm not much of a scripter, and I don't have a lot of time on my hands to work on it, but I'm sure other members will be able to help. I have a question though: why is it that you using his engine caused him to stop working on it?
EDIT: On second thought, what kind of save/load system do you need? I might be able to muster something up, and that's a big maybe because I haven't scripted for a year or two.
Only I wish I understood an A and and a Z about the Scripting Language. Unfortunately, 4 years since got the RPG Maker XP, I still rely on other players who know how to script.
I used his engine without permission which rightfully pissed him off. Basically, I decrypted his demos and took them apart from A-Z and made my own game using his. That being said, I never took credit for making the engine nor anything else, and aside from some early bad stuff, I didn't release my game publically. He intended to release the engine from the start, but as a finished package and not a half-assed package like it is now.
Anyway him and I are over it, we actually chat on AIM pretty frequently, and despite an old sore spot he doesn't (I think?) hold any grudges against me. Plus, I'm updating his engine myself. Be sure and DL from the topic if you plan to do any heavy FE game making, but my updates have only just started. The next one will be a huuuuuge update.
@Silentresident, if you could get anyone on your team to just whip up a simple save script, even if it's only text based, the entire Fire Emblem community would be very grateful to you!
QUOTE
EDIT: On second thought, what kind of save/load system do you need? I might be able to muster something up, and that's a big maybe because I haven't scripted for a year or two.
Actually, I sent you a PM about a month ago begging for your help haha! Might try browsing through your PM's And we would appreciate your help if you could offer it!
P.S. I sent a request to Kread Ex a week or two ago, so this should be pretty detailed for the request?
The PMs
Klok: So you like playing Fire Emblem type games? Right now I'm looking for someone to whip up a simple save system. Even if it only has one slot available, it would be great if there was a way to save at the beginning of a chapter and be able to restart from there. Suspend files just aren't going to cut it. >.>
And since you're a scripter, I was hoping maybe I could beg just that small of a favor off of you.
Kread: I have no time to play your game currently, but I should have enough to do your save system. I just need to have the necessary graphic files, your screen resolution, and also a bit more in-depth information.
Klok: Well I don't know much about the "necessary graphic files" because I don't particularly understand how a save system works. However I'll give you the latest build of the editor, which you can download here: http://www.mediafire.com/?s8ge6t8cr93aksp
From there you can launch the project file and have a look around. There's a script called Save/Load but it doesn't look to be functional yet. Maybe it's a beta/not yet started? (The editor is not yet complete) And here's the script just as itself in case that helps you.
#============================================================================== # ** Window_MenuStatus #------------------------------------------------------------------------------ # This window displays party member status on the menu screen. #==============================================================================
class Window_MenuStatus #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 64 y = i * 116 actor = $game_party.actors[i] draw_actor_name(actor, x, y) draw_actor_class(actor, x + 144, y) draw_actor_level(actor, x, y + 32) draw_actor_state(actor, x + 90, y + 32) draw_actor_exp(actor, x, y + 64) draw_actor_hp(actor, x + 236, y + 32) draw_actor_sp(actor, x + 236, y + 64) end end end
#============================================================================== # ** Scene_File #------------------------------------------------------------------------------ # This is a superclass for the save screen and load screen. #==============================================================================
class Scene_File #-------------------------------------------------------------------------- # * Main Processing : Window Initialization #-------------------------------------------------------------------------- def main_window super # Make help window @help_window = Window_Help.new @help_window.set_text(@help_text) # Make save file window @savefile_windows = [] for i in 0..3 @savefile_windows.push(Window_SaveFile.new(i, make_filename(i))) end @savefile_windows[@file_index].selected = true end end
class Scene_Save alias_method :bwd_fe_scnsave_write_data, :write_data def write_data(file) begin bwd_fe_scnsave_write_data(file) rescue $game_map.whoops end Marshal.dump($data_actors, file) Marshal.dump($game_recolor, file) end end
class Scene_Load #-------------------------------------------------------------------------- # * Read Data #-------------------------------------------------------------------------- alias_method :bwd_fe_scnload_read_data, :read_data def read_data(file) bwd_fe_scnload_read_data(file) $data_actors = Marshal.load(file) $game_recolor = Marshal.load(file) end end
class SDK::Scene_Base attr_reader :suspend_calling #-------------------------------------------------------------------------- # * Suspend Flag Set #-------------------------------------------------------------------------- def suspend @suspend_calling = true end #-------------------------------------------------------------------------- # * Suspend #-------------------------------------------------------------------------- def suspend_data # Write save data file = File.open('Suspend.rxdata', "wb") suspend_write_characters(file) suspend_write_frame(file) suspend_write_setup(file) suspend_write_data(file) file.close end #-------------------------------------------------------------------------- # * Make Character Data #-------------------------------------------------------------------------- def suspend_write_characters(file) # Make character data for drawing save file characters = [] for i in 0...$game_party.actors.size actor = $game_party.actors[i] characters.push([actor.character_name, actor.character_hue]) end # Write character data for drawing save file Marshal.dump(characters, file) end #-------------------------------------------------------------------------- # * Write Frame Count #-------------------------------------------------------------------------- def suspend_write_frame(file) # Wrire frame count for measuring play time Marshal.dump(Graphics.frame_count, file) end #-------------------------------------------------------------------------- # * Write Setup #-------------------------------------------------------------------------- def suspend_write_setup(file) # Increase save count by 1 $game_system.save_count += 1 # Save magic number # (A random value will be written each time saving with editor) $game_system.magic_number = $data_system.magic_number end #-------------------------------------------------------------------------- # * Write Data #-------------------------------------------------------------------------- def suspend_write_data(file) # Write each type of game object Marshal.dump($game_system, file) Marshal.dump($game_switches, file) Marshal.dump($game_variables, file) Marshal.dump($game_self_switches, file) Marshal.dump($game_screen, file) Marshal.dump($game_actors, file) Marshal.dump($game_party, file) Marshal.dump($game_troop, file) #$game_map.sprite_print #Yeti Marshal.dump($game_map, file) Marshal.dump($game_player, file) Marshal.dump($data_actors, file) Marshal.dump($game_recolor, file) Marshal.dump(Event_Spawner.saved_events, file) end #-------------------------------------------------------------------------- # * Read Save Data # file : file object for reading (opened) #-------------------------------------------------------------------------- def load_suspend $game_temp = Game_Temp.new # Read save data file = File.open('Suspend.rxdata', "rb") suspend_read_characters(file) suspend_read_frame(file) data = suspend_read_data(file) if !suspend_read_edit # Play buzzer SE $game_system.se_play($data_system.buzzer_se) file.close return else set_suspend_data(data) # Play decision SE $game_system.se_play($data_system.decision_se) end suspend_read_refresh file.close # Restore BGM and BGS unless $game_system.playing_bgm.nil? $game_system.playing_bgm.position = 0 end unless $game_system.in_arena $game_system.bgm_play($game_system.playing_bgm) $game_system.bgs_play($game_system.playing_bgs) end $game_map.wait_time = 10 # Update map (run parallel process event) $game_map.update $game_map.update_map_animation $game_map.highlight_test # Switch to map screen $scene = $game_system.in_arena ? Scene_Arena.new( $game_system.arena_distance) : Scene_Map.new end #-------------------------------------------------------------------------- # * Read Character Data #-------------------------------------------------------------------------- def suspend_read_characters(file) # Read character data for drawing save file characters = Marshal.load(file) end #-------------------------------------------------------------------------- # * Read Frame Count #-------------------------------------------------------------------------- def suspend_read_frame(file) # Read frame count for measuring play time Graphics.frame_count = Marshal.load(file) end #-------------------------------------------------------------------------- # * Read Data #-------------------------------------------------------------------------- def suspend_read_data(file) data = [] 13.times do data.push(Marshal.load(file)) end # Read each type of game object #$game_system = Marshal.load(file) #$game_switches = Marshal.load(file) #$game_variables = Marshal.load(file) #$game_self_switches = Marshal.load(file) #$game_screen = Marshal.load(file) #$game_actors = Marshal.load(file) #$game_party = Marshal.load(file) #$game_troop = Marshal.load(file) #$game_map = Marshal.load(file) #$game_player = Marshal.load(file) #$data_actors = Marshal.load(file) #$game_recolor = Marshal.load(file) #Event_Spawner.saved_events = Marshal.load(file) return data end
def set_suspend_data(data) $game_system = data[0] $game_switches = data[1] $game_variables = data[2] $game_self_switches = data[3] $game_screen = data[4] $game_actors = data[5] $game_party = data[6] $game_troop = data[7] $game_map = data[8] $game_player = data[9] $data_actors = data[10] $game_recolor = data[11] Event_Spawner.saved_events = data[12] end #-------------------------------------------------------------------------- # * Read Edit #-------------------------------------------------------------------------- def suspend_read_edit # If magic number is different from when saving # (if editing was added with editor) if $game_system.magic_number != $data_system.magic_number return false unless $DEBUG # and Input.press?(Input::Y) print 'Save not for this version, continuing anyway' end return true end #-------------------------------------------------------------------------- # * Refresh Game Party #-------------------------------------------------------------------------- def suspend_read_refresh # Refresh party members $game_party.refresh end end
Currently the simplest hope I have would be for me to make an "Outro" map where the final cutscene for that chapter happens and etc, then have the events go a bit like this:
The flow of each chapter is like this: First you have a "Chapter Change" map which displays a title for the map, like so.
Then you have an "Intro" map (You can skip this if you want to) where characters chat with each other.
After that you can have a "SCENE" map play out a scene of sorts (The various scenes can be pretty much however you imagine and you can have as many back to back as you like).
After that comes the "BATTLE" map where you can have your battle take place. Obviously this is the gameplay map lol.
Once you complete the win conditions, you are directed to (optional of course) an outro map/scene map where you see the characters congratulating themselves on a damn good victory.
Right here is where I'd want to inject the save screen command. Maybe have it pop up with the classic FE save screen (But I don't have graphics for it so something basic and simple would be just fine. My beta testers aren't picky, we just want to make a longer game.) where it gives you 3 slots to choose from, then you save/overwrite to one of those slots, then continue on to the next part, where you transfer to the next "Chapter Change" map for the next chapter and the cycle repeats.
I want it to basically save actor data, amount of gold left, and other relevant things of that nature. (If you need specifics I can provide them.)
Then from the main menu, there would be a "Load suspend" button where you load a game that was suspended (Mid chapter) and there should be a "Load game" button where you load from the START of a map underneath it, and that button would pop up a box saying "Y/n?" and you could load from one of the slots.
I hope that explains it enough?
Kread Ex unfortunately couldn't do the request because he is busy with two other projects, so that was the end of that.
This post has been edited by Klokinator: Jul 31 2011, 04:13 PM
I've found a Quick Save script, you hit Alt to access it, but a quick edit of Scene_Menu would enable you to put it inside of the menu. When you quick save, it automatically quits the game. When you open the game again, it automatically loads the quick save then deletes it so you can start a new game again. The switch to deactivate it is 10.
CODE
#_______________________________________________________________________________ # MOG Quick Save V1.0 #_______________________________________________________________________________ # By Moghunter # http://www.atelier-rgss.com #_______________________________________________________________________________ # Permite salvar e carregar o jogo apenas um vez por partida. # Ou seja, o script salva o progresso e automaticamente sai do # jogo e assim que você reiniciar o jogo ele automaticamente # carregará o jogo e apagará o save carregado. # Sistema semelhante ao jogos Taticos como Ogre Battle e # Final Fantasy Tactics Advanced. #_______________________________________________________________________________ module MOG #Botão que ativa a janela de Quick Save. QUICK_BUTTON = Input::ALT #ID da switch que desativa o Quick Save. QUIK_DISABLE = 10 end #_______________________________________________________________________________ $mogscript = {} if $mogscript == nil $mogscript["quick_save"] = true ############### # Scene_Title # ############### class Scene_Title alias mog41_main main def main if FileTest.exist?("QuickSave.rxdata") $scene = Auto_Load.new end mog41_main end end ############### # Scene_Quick # ############### class Scene_Quick def initialize(menu_index = 0) @menu_index = menu_index end def main s1 = "Quick Save" s2 = "Cancel" @command_window = Window_Command.new(160, [s1, s2]) @command_window.index = @menu_index @command_window.x = 640 @command_window.y = 180 @command_window.contents_opacity = 0 @command_window.opacity = 0 @spriteset = Spriteset_Map.new if $game_switches[MOG::QUIK_DISABLE] == true @command_window.disable_item(0) end Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end for i in 0..15 @command_window.x -= 30 @command_window.contents_opacity -= 15 @command_window.opacity -= 15 Graphics.update end Graphics.freeze @command_window.dispose @spriteset.dispose end def update if @command_window.x > 240 @command_window.x -= 25 @command_window.contents_opacity += 15 @command_window.opacity += 15 elsif @command_window.x <= 240 @command_window.x = 240 @command_window.contents_opacity = 255 @command_window.opacity = 255 end @command_window.update if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end if Input.trigger?(Input::C) case @command_window.index when 0 if $game_switches[MOG::QUIK_DISABLE] == true $game_system.se_play($data_system.cancel_se) else $game_system.se_play($data_system.decision_se) $scene = Auto_Save.new end when 1 $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new end end end end ############## # Scene_Map # ############## class Scene_Map alias mog41_update update def update if Input.trigger?(MOG::QUICK_BUTTON) $game_system.se_play($data_system.decision_se) $scene = Scene_Quick.new end mog41_update end end ############# # Auto_Save # ############# class Auto_Save def main asv(make_filename) return end def make_filename return "QuickSave.rxdata" end def asv(filename) $game_system.se_play($data_system.save_se) file = File.open(filename, "wb") write_save_data(file) file.close Audio.bgm_fade(800) Audio.bgs_fade(800) Audio.me_fade(800) $scene = nil end def write_save_data(file) characters = [] for i in 0...$game_party.actors.size actor = $game_party.actors[i] characters.push([actor.character_name, actor.character_hue]) end Marshal.dump(characters, file) Marshal.dump(Graphics.frame_count, file) $game_system.save_count += 1 $game_system.magic_number = $data_system.magic_number Marshal.dump($game_system, file) Marshal.dump($game_switches, file) Marshal.dump($game_variables, file) Marshal.dump($game_self_switches, file) Marshal.dump($game_screen, file) Marshal.dump($game_actors, file) Marshal.dump($game_party, file) Marshal.dump($game_troop, file) Marshal.dump($game_map, file) Marshal.dump($game_player, file) end end ############# # Auto Load # ############# class Auto_Load def main $game_temp = Game_Temp.new Graphics.transition ald(make_filename) return end def make_filename return "QuickSave.rxdata" end def ald(filename) if FileTest.exist?(filename) $game_system.se_play($data_system.load_se) file = File.open(filename, "rb") read_save_data(file) file.close File.delete(filename) $game_system.bgm_play($game_system.playing_bgm) $game_system.bgs_play($game_system.playing_bgs) $game_map.update $scene = Scene_Map.new else p "File not found" p "Suport - www.atelier-rgss.com" Audio.bgm_fade(800) Audio.bgs_fade(800) Audio.me_fade(800) $scene = nil end end def read_save_data(file) characters = Marshal.load(file) Graphics.frame_count = Marshal.load(file) $game_system = Marshal.load(file) $game_switches = Marshal.load(file) $game_variables = Marshal.load(file) $game_self_switches = Marshal.load(file) $game_screen = Marshal.load(file) $game_actors = Marshal.load(file) $game_party = Marshal.load(file) $game_troop = Marshal.load(file) $game_map = Marshal.load(file) $game_player = Marshal.load(file) if $mogscript["menu_sakura"] == true $game_system.load_count += 1 end if $game_system.magic_number != $data_system.magic_number $game_map.setup($game_map.map_id) $game_player.center($game_player.x, $game_player.y) end $game_party.refresh end end
I've never played a Fire Emblem game in my life, so I don't really know how any of this works xD I might be able to edit it in whatever way you need, just let me know!
Did you manage to test it in the engine? I'll test it anyway but if it works (I think I googled every possible script already lol) I'll let you know. That being said, Yeti almost rewrote the entire system, so we'll see...
Edit: Doesn't work. Yeti uses "suspend" codes throughout his scripting that allow the game to save anytime. Naw we're gonna need a full custom script here guys... because it's that big of an engine lol
This post has been edited by Klokinator: Aug 1 2011, 12:30 PM
@Silentresident, if you could get anyone on your team to just whip up a simple save script, even if it's only text based, the entire Fire Emblem community would be very grateful to you!
Glad to help. We only got 1 scripter in the PZE team currently, who, however, is pretty busy, as he happens to be also Moderator on this site. It is up to him if can he help. Let me know if you still need his help, and I will inform him.
This post has been edited by SilentResident: Aug 2 2011, 05:16 AM
Eh that sucks I'm afraid I can't do much more scripting than normal editing, I can't make completely new scripts xP Wish I could help you guys more Klok!
Let me know if you still need his help, and I will inform him
Right now, all we need is a save script. I'd even be willing to try scraping some money together, like say $40 or something? I mean, if it's a crappy script then meh... but I'd part with $50 if it was a good one, for sure!
Let me know if you still need his help, and I will inform him
Right now, all we need is a save script. I'd even be willing to try scraping some money together, like say $40 or something? I mean, if it's a crappy script then meh... but I'd part with $50 if it was a good one, for sure!
No money. We accept no money mate. But I am gonna send a PM to him and let him be aware of your request in case he can help. Sending a PM to him now.
Oh cool, I could afford it, but I don't have an online account right now anyway lol. My thanks if he helps us out!
In other news, my next revision for the FEXP engine will be in about 2 days, featuring dozens of new example events, script edits that elaborate on functions left out in the original release, and some free maps to work with or use as references!
Group: +Gold Member
Posts: 1,528
Type: Scripter
RM Skill: Undisclosed
Hey Klokky I was thinking of helping, but I'm afraid I don't have as much time free as I would like... If I could write the main part of the load script, would you be able to find someone who could do the final tweaks for me? Just the small bits like the animation/ animation speeds, proper window sizing, etc?
__________________________
K.I.S.S. Want help with your scripting problems? Upload a demo! Or at the very least; provide links to the scripts in question.
Yes that would be fine Bwdyeti might be willing to do it if the major part of the script were finished! Thanks for your time NR, and that offer stays on the table if you want it lol
Group: +Gold Member
Posts: 1,528
Type: Scripter
RM Skill: Undisclosed
Well... I do <3 money.....
Nah, that just makes things complicated.
Anywho, I've been too lazy to do the save menu, but I've done a mock of the title, and of the load menu, both should be working demo
I don't know what BWD had planned for the extra's option (I couldn't find a clip on youtube that opened that option), so it's just been left blank for the moment
Otherwise, how is it looking?
__________________________
K.I.S.S. Want help with your scripting problems? Upload a demo! Or at the very least; provide links to the scripts in question.
HOLY CRAP. You literally (Albeit simple graphics) recreated the entire FE7 load game sequence O___________O And the menu and... everything! Now, I'll reply in a bit to see if it works in FEXP, because I don't know much about scripting. I am praying it does though
Edit: Huh, doesn't seem to work. IDK if you know this, but Yeti uses his own RGSS call language in FEXP, like using "bwdgmovementskl" and putting bwd in lots of places... did you try this out in the FEXP engine? Or maybe there are some scripts of his I have to cancel out?
Edit2: Here, you should download the FEXP engine (I'm assuming you did already, because you mentioned it earlier?) and I'll even give you my updated version which has lots of example events and explanations of how certain script commands work. You probably don't need it but whatevs.http://www.mediafire.com/?bkfl4sdc22cc0oc
Also, Yeti uses a zoom system for his game that shrinks the screen, and also uses a 16x16 tileset system as well. Erasing his title screen almost made the scripts work, but in the end they don't seem to call the right things. /totalscriptingnoob
This post has been edited by Klokinator: Aug 12 2011, 11:15 AM
Wellllp no word from NR, but hey here's some engine updates and stuff.
I fixed the map preview sprites! Instead of being off centered, you can now see the whole sprite, making it easier to tell each unit apart in the editor!
Compare:
to
I've also added a whole new feature to the engine, general event pictures!
Well, it IS perfectly useable, you just can't make a game longer than two chapters. It's great for those contests that FE forums have, where you need to make a toughie two chapter game or something.
Edit: Oh yeah, and Yeti said he'll probably fix all of the major bugs in it, and add the two or three core features it needs to even be useable. That includes the save system, the chapter preperation screen, and the various dialog boxes.
Dunno about anything else.
This post has been edited by Klokinator: Aug 29 2011, 05:42 PM
Love it man! I am always surprised how comes the 0001010111011 language of the computers can actually be transformed into those graphics, into functioning starting kits that have a living breath.