|
Post by HolyFlame1 on Oct 13, 2004 11:50:08 GMT -5
Great Job Doan! really good surprise! I knew you'd make a disscussion board when you said I'd understand in the email... Well... lets get to business after being patient for sooo long I'm now ready to undertake learning how to have 8 party members..
|
|
|
Post by Doan the Nado on Oct 13, 2004 13:05:59 GMT -5
First of all, I want to say thank you for joining my message board and making the first official post by a member (other than me or vespuleth). Secondly, I noticed you had another Member name before, HolyFlame (instead of HolyFlame1). I'm assuming you either forgot the password or used an invalid e-mail. Because of this, I changed the password and e-mail on your HolyFlame account and sent a private message with your new password to your HolyFlame1 account. This should allow you to get back the name you want.
Okay, now on to your question. The first step in using an 8-party member system is to understand how member information is loaded. If you take a look at the Member Database, you will see that each member has a database number connected to him. The first member on the list is 00, the second is 01, the third is 02, and so on. To load these members' info, you have to change the value of Variable 86: Member Number, and then use the command Data>Member Info>Load. This will load that member's information to various variables, including HP, MP, Strength, and so on.
Once you understand how to access a member's info, creating an 8-party member system gets a whole lot easier. The drawback is that you can't use any of the default features... the default Member Order commands, the X-menu, and the DBS (default battle system) will all be made completely useless. If you're willing to work around all that, here's how I created my 8-party member system:
First you'll have to create 3 varibles:
Variables: MemberOrder1-4 MemberOrder5-8 MemberVarDump
The first two variables will hold the positions of each party member, and the third will be used to manipulate the first two to get the info on the correct member. In case you don't know, all RPGM2 variables have 8 digits. Rarely will a number ever be that high, but the good thing is that one variable can be used to store a lot of information. In this case, I use it to store the Member Database variable for each position in the party. This probably isn't all connecting, but try to read through it slowly. By subdividing variables into parts, you can store a lot in each variable. So for me, I divide the variables as follows:
MemberOrder1-4: 11|22|33|44 MemberOrder5-8: 55|66|77|88
As you can see in MemberOrder1-4, the ten-millions and millions digits hold the value for party member 1, the hundred-thousands and ten-thousands digits hold the value for party member 2, the thousands and hundreds digits hold the value for party member 3, and the tens and ones digits hold the value for party member 4. Variable MemberOrder5-8 acts the same way for party members 5-8.
What does this mean? This means that the party leader's member database number should be in the spot where you see "11", the second member in line should be seen where it says "22", and so on. I'll give you a quick example in a moment, but let me first say that it's important to create a blank member as party member 00. This will not be an actual member, just a placeholder. Here's an example of how the variables will work:
At the beginning of the game, let's assume you only have one person in the party, party member 01. The variables would be:
MemberOrder1-4: 01000000 MemberOrder5-8: 00000000
This means that in the first spot, party member 01 is there, and then there are no other members in the party. This is why 00 shouldn't be a member... anytime the system I created sees a "00" it knows there is no member. Now let's say you talk to an old man and he joins the party. If his member database number is 07, your new variables will be:
MemberOrder1-4: 01070000 MemberOrder5-8: 00000000
I'm hoping this is starting to make sense. So now you should know how the member positions are stored, but you may be asking, what is all this for? At some point, you are going to need to load the information of the members in your party. Doing this is a pretty straightforward process if you pay close attention to how I do it. First of all, you set the variable MemberVarDump equal to the position of which member you want to load info for. If you want to load the leader's info, you would set it equal to 1, the second-in-line's info, you would set it equal to 2, and so on. After you do that, you'll want to call a scirpt entitled "LoadMemberInfo". Let's create that script.
Script: LoadMemberInfo
SB: Sort Variable[MemberVarDump] SB: Apply If 1 Data: Variable[MemberVarDump] = [MemberOrder1-4] / 1000000 SB: To End SB: Apply If 2 Data: Variable[MemberVarDump] = [MemberOrder1-4] / 10000 Data: Variable[MemberVarDump] = [MemberVarDump] % 100 SB: To End SB: Apply If 3 Data: Variable[MemberVarDump] = [MemberOrder1-4] / 100 Data: Variable[MemberVarDump] = [MemberVarDump] % 100 SB: To End SB: Apply If 4 Data: Variable[MemberVarDump] = [MemberVarDump] % 100 SB: To End SB: Apply If 5 Data: Variable[MemberVarDump] = [MemberOrder5-8] / 1000000 SB: To End SB: Apply If 6 Data: Variable[MemberVarDump] = [MemberOrder5-8] / 10000 Data: Variable[MemberVarDump] = [MemberVarDump] % 100 SB: To End SB: Apply If 7 Data: Variable[MemberVarDump] = [MemberOrder5-8] / 100 Data: Variable[MemberVarDump] = [MemberVarDump] % 100 SB: To End SB: Apply If 8 Data: Variable[MemberVarDump] = [MemberVarDump] % 100 Script: Branch End Data: Variable[86:MemberNumber] = [MemberVarDump] Data: Member Info: Load
End of Script
What this script does is pretty simple. It takes the number that you put into MemberVarDump and sorts it. If the value = 1, it breaks down the MemberOrder1-4 variable and then Loads the info for the leader. After this script executes, MemberNumber will hold the value of the database number of the member, and the attribute variables will hold the values of the member's attributes.
That's all you really need to get started on an 8-member party system. That covers the storage of who is where along with accessing the info. Let me know once you have that set up and I will then proceed to give you the scripts for adding a party member.
Good luck with that,
Doan the Nado
|
|
|
Post by HolyFlame2 on Oct 13, 2004 14:54:52 GMT -5
This seems very straightforward ( I had to make another sn I didn't feel like going through all this stuff) I know for sure I can do this.. But I forgot how to create variables...
Administrator edit: Since the variable question is a little off-topic from this one, I'll let it slip this time that you created another topic asking this question. Please do not create multiple threads for the same problem. For the answer to this question, go to the topic entitled "variables".
|
|
|
Post by Doan the Nado on Oct 13, 2004 15:31:47 GMT -5
If you use this 8-party member system, your DBS options will be quite limited. You could still technically use the DBS, but I am not all that familiar with it. There may be a way around it, but I believe you would only be able to have 4 members battling at the same time. I could give you a script to be able to achieve that. In my opinion, though, the advatage of having 8 members is the beauty of having them all be able to battle at once. That is what my game will do. To do that, you will have to create your own custom battle system (CBS). The down side of that is that you can't use any of the default enemy graphics.
Hope that answers your (misplaced) question,
Doan the Nado
|
|
Sion
RPGM2 Helper
The Prodigal has returned!
Hero of the forsaken winds...
Posts: 152
|
Post by Sion on Oct 13, 2004 15:42:48 GMT -5
Then what will you use instead of your your default graphics? I want to do the same thing, but how will you know what your fighting??
|
|
|
Post by Doan the Nado on Oct 13, 2004 16:14:41 GMT -5
If you're using Fu-Ma's scripts, I recommend you stick with the DBS. I can give you some scripts that will allow you to have 8 party members with you, but only 4 in battle at a time. That would be like most commercial RPGs, where you have 8 party members but have to pick which 4 you want to use. I can easily tell you how to create something like this, and then the player would be able to press the square button and re-order his members, choosing which 4 will be battling. Let me know if this is what you want to do.
Doing something like this would even allow you to have more than 8 party members, and it would also be completely unnecessary to write that LoadMemberInfo script I gave you, as the default menus would work fine for your front four members. If you want to do this, let me know.
If, however, you're intent on having 8 party members in battle at the same time (as I am), it will be completely impossible to use the default battle system. You will have to warp your party to a new "battle" map, where your own custom scripts will allow the player to select what they want each member to do. This is a very complicated thing to create, and it will take me weeks to do it. There is no feasible way that I could share all my scripts and events for a system like this, as there's just so much content. If you want to do this, it is going to be a lot of work and it requires very advanced scripting abilities. I don't want to limit you, but I think that right now that is a little bit beyond your abilities.
Let me know what you decide,
Doan the Nado
|
|
Sion
RPGM2 Helper
The Prodigal has returned!
Hero of the forsaken winds...
Posts: 152
|
Post by Sion on Oct 13, 2004 16:28:24 GMT -5
that first option sounds great! even more than 8 party members!? thats awesome! tell me how! ( if you wanna here the new story I'm making go to your games disscusion board and go to Sunknight.)
|
|
|
Post by Doan the Nado on Oct 14, 2004 2:52:38 GMT -5
Okay, I can help you with that. There are a couple ways you can go from here, and I need to know which you prefer:
1. When the player presses [], a message window comes up that says, "At which position would you like to place (member)?" (where member is the name of the party member). Then there would be a multiple choice window that pops up with the option of 1, 2, 3, 4, or none (or whatever you want it to say when you want to not put that member in the party). This message would pop up for each of the 8 members in your party, unless four members are selected, at which point the script will end.
2. Pressing [] brings the player to an entirely different screen, where he can see each member (possibly with the member's stats alongside him) and reorder the party by moving a cursor around and selecting who goes where.
Here are the pros and cons of each method:
1. This method is much simpler. The player isn't transported off the game play screen, so you don't have to worry about leaving the map. It will be a lot easier to code, but will still serve the same functions that option 2 provides.
2. This option will look a lot better. It will not only provide the player with a way to see everyone's stats all at once (if you choose to use a CMS display), it will also look and feel a lot more streamlined. The problem is that it involves warping the player to a separate map, and there can be problems re-orienting the camera or with warping back on top of wandering events. This would be a lot of work to code (especially if you want to add the CMS display), and may be more work than it's actually worth.
If you want my opinion, I'd prefer you go with option 1, as it involves less work for both you and me. Also, I recall someone saying that Fu-Ma's game save is just barely within the memory limits, and option 2 involves some scripts and VFX that take up a significant amount of memory. Option 2 may not fit into a game built off Fu-Ma.
Lemme know, and then we can get to work on this,
Doan the Nado
|
|
Sion
RPGM2 Helper
The Prodigal has returned!
Hero of the forsaken winds...
Posts: 152
|
Post by Sion on Oct 14, 2004 13:57:15 GMT -5
Okay I'll stick with one... I'm so ready!
|
|
|
Post by Doan the Nado on Oct 14, 2004 15:59:39 GMT -5
Okay, glad to hear it. I'm kind of making this script as I go, here, so please forgive me if I make a mistake somewhere. You're still going to need those two variables: MemberOrder1-4 and MemberOrder5-8. Also, create a party member as the first member of your database (Member 00) which will not be a real party member. To do this, just make a new member without any graphic for it, then go to File>Sort Database, and choose that member to place at the top.
Once you have that set up, you'll need a few more things. Go ahead and create (or rename, whichever the case may be) these things and then we'll be ready to start scripting:
First, create a new event, named []-button. Right under the name is a place where you can choose either Normal or System. Choose system. That's all you need to do for now.
Now create a script named Message, make it a content script, but just leave it blank for now. Now you can begin creating a new script, named []-button. Leave this script as a content script, and make the script. It will be helpful to note that the TempVariables can be found between 990-999, and that the Member Number variable is number 86
[]-button Script 000 Data: Variable [TempVariable0] = 1000000 001 Data: Variable [TempVariable1] = 0 002 SB: Repeat: Variable[TempVariable0] >= 1 003 Data: Variable [TempVariable2] = [MemberOrder1-4] / [TempVariable0] 004 Data: Variable [Member Number] = [TempVariable2] % 100 005 SB: Condition [Member Number] = 0 006 SB: To End 007 Script: Condition End 008 Data: Member Info: Load 009 Script: Call [Message] 010 Script: Branch End 011 Data: Variable [TempVariable0] = 1000000 012 SB: Repeat: Variable[TempVariable0] >= 1 013 Data: Variable [TempVariable2] = [MemberOrder5-8] / [TempVariable0] 014 Data: Variable [Member Number] = [TempVariable2] % 100 015 SB: Condition [Member Number] = 0 016 SB: To End 017 Script: Condition End 018 Data: Member Info: Load 019 Script: Call [Message] 020 Script: Branch End 021 Data: Variable [TempVariable2] = 0 022 SB: Repeat: Variable [TempVariable2] = 0 023 Data: Variable [TempVariable2] = [TempVariable1] / 1000000 024 SB: Condition [TempVariable2] = 0 025 Data: Variable [TempVariable1] = [TempVariable1] * 100 026 SB: Condition [TempVariable1] = 0 027 Screen Display: Text: "You didn't choose anyone! Press [] to try again." (Be sure the Close Window box for this message window is checked. From now on, I'll say either "checked" or "un-checked" in parentheses after each Screen Display command) 028 Script: Force Script End 029 Script: Condition End 030 Script: Condition End 031 SB: Repeat End 032 SB: Sort: Variable [TempVariable2] 033 SB: Apply If +1 034 Party: Members: Formation [Database Member 1] [None] [None] [None] 035 SB: To End 036 SB: Apply If +2 037 Party: Members: Formation [Database Member 2][None] [None] [None] 038 SB: To End 039 SB: Apply If +3 040 Party: Members: Formation [Database Member 3] [None] [None] [None] 041 SB: To End ...and so on for each member in your game. For example, if you had 20 members, you would have those 3 lines repeated for each one until you get to 090 SB: Apply If +20 091 Party: Members: Formation [Database Member 20] [None] [None] [None] 092 Script: Branch End 093 Data: Variable: [TempVariable1] = [TempVariable1] % 1000000 094 Data: Variable: [TempVariable1] = [TempVariable1] * 100 095 SB: Repeat: Variable [TempVariable1] >= 1 096 Data: Variable: [TempVariable2] = [TempVariable1] / 1000000 097 SB: Sort: Variable [TempVariable2] 098 SB: Apply If +1 099 Party: Members: Change Member [Database Member 1] Add 100 SB: To End 101 SB: Apply If +2 102 Party: Members: Change Member [Database Member 2] Add 103 SB: To End 104 SB: Apply If +3 105 Party: Members: Change Member [Database Member 3] Add 106 SB: To End ...and so on for each member in your game. For example, if you had 20 members, you would have those 3 lines repeated for each one until you get to 155 SB: Apply If +20 156 Party: Members: Change Member [Database Member 20] Add 157 Script: Branch End 158 Data: Variable: [TempVariable1] = [TempVariable1] % 1000000 159 Data: Variable: [TempVariable1] = [TempVariable1] * 100 160 Script:Branch End
Note that after line 41, your numbers probably will not match my numbers, unless you have exactly 20 party members in your game. This is okay, it just might be harder to compare scripts since the numbers are different. Now that you have that script made, it's time to make the script named Message. Go back into that blank script and create this:
Message Script 000 SB: Repeat: Flag [000: Off (Fixed)] = Off 001 Screen Display: Text: Message "At which position would you like to place " (un-checked) 002 Screen Display: Content: Input [001: Common Name] 003 Data: Flag [011: Cancel Menu] Off 004 Input: Multiple Choice 5 '1'2'3'4'None' (un-check "Enable Auto Conditions". Place it wherever you want it to appear) 005 Screen Display: Text: Close Message Window 006 SB: Sort: Variable [User Choice] 007 SB: Apply If +1 008 Data: Variable: [TempVariable2] = 1000000 009 SB: To End 010 SB: Apply If +2 011 Data: Variable: [TempVariable2] = 10000 012 SB: To End 013 SB: Apply If +3 014 Data: Variable: [TempVariable2] = 100 015 SB: To End 016 SB: Apply If +4 017 Data: Variable: [TempVariable2] = 1 018 Script: Branch End 019 Data: Variable: [TempVariable3] = [TempVariable1] / [TempVariable2] 020 Data: Variable: [TempVariable3] = [TempVariable3] % 100 021 SB: Condition: Variable [TempVariable3] != 0 022 Screen Display: Text "Slot " (un-checked) 023 Screen Display: Content: Variable [User Choice] 024 Screen Display: Text " is already occupied. Please choose a different slot." (checked) 025 SB: To Top 026 Script: Condition End 027 Data: Variable: [TempVariable3] = [Member Number] * [TempVariable2] 028 Data: Variable: [TempVariable1] = [TempVariable1] + [TempVariable3] 029 Data: Variable: [TempVariable0] = [TempVariable0] / 100 030 SB:To End 031 Script: Branch End
That's it! If you've got this far, that hopefully means you created both scripts and you have something that's ready to work. Remember that event I had you create, []-button? Go back to that event. In the "Apply" slot, place the script titled []-button. Now exit and update and go to Game>Game Settings>Adv>Settings and where it says "[] Button", place your event called []-button. Your scripts are now nearly ready to work.
Go to Game>General Settings>Basic. You will see the party that you have selected to begin the game with. I want you to get a pen and paper. Click on each member, starting with the first one, and write down his member database number as a 2-digit number (it will say "0001", but I just want you to write "01"). If you have a second member, do the same for him, placing the 2-digit number beside the previous number you wrote (if he's member "0002", your new number should now be 0102). After you've written down each member like this, add 0's to the end of the number you have until you have an 8-digit number (if you just have the above two members, it will now say 01020000). Now that you've done that, go to the Adv tab and go to Variable. Look for the variable you created named MemberOrder1-4, and make it be the number you have written down. If you want to begin the game with more than four characters, place the member database numbers of members 5-8 (just like before, in two digit chunks) in the variable called MemberOrder5-8.
You now have everything in place to be able to test your scripts. Go to Test Play and once you're in your game, press []. A message window should pop up for each person in your party that will allow you to select the position for each member. You should be able to make it so that only 1 person is in your party following you around, or up to 4 members, in whatever order you choose to put them in. Once we have this figured out, I will tell you how to add more members to your party and how to remove members from the party.
Reply to this post with any problems you have,
Doan the Nado
|
|
Sion
RPGM2 Helper
The Prodigal has returned!
Hero of the forsaken winds...
Posts: 152
|
Post by Sion on Oct 14, 2004 16:36:21 GMT -5
thanks... I may be awhile because I don't have a printer so I'll have to run upstairs and downstairs multiple times but this should only take me like 20 minutes... And thanks for reading my game bio... Sunknights will be the best game ever thanks to you! ( not as good as your game..) I hope you do sell your game... That way you can make a career doing it if this what you really love... Alright let me get to work running to and fro...
|
|
Sion
RPGM2 Helper
The Prodigal has returned!
Hero of the forsaken winds...
Posts: 152
|
Post by Sion on Oct 14, 2004 16:49:58 GMT -5
Doan, I keep getting confused on the Data Variable parts. In that menu there are to bars that contain Varible information one has almost all of the variables starting with Samplevariable00 and the second is above the bar that says set... Please tell me which ones I need to modify... I tried this kind of script before where you press square and a sword appears killing your enemy...
|
|
|
Post by Doan the Nado on Oct 14, 2004 17:02:45 GMT -5
Okay, this is quite simple, just pay close attention. At the very top it says "SampleVariabl00" then there is an "=" beside it. Under there it says "Var 0 (Fixed)" "+" "Var 0 (Fixed)". My first Data: Variable command says: 000 Data: Variable [TempVariable0] = 1000000 This means to place TempVariable0 in the place where it currently shows "SampleVariabl00". Then choose set down below there and make the number be 1000000. Leave everything else, as all that does is add 0 (which of course does nothing). Now, when I've given you a command that involves two things, such as: 003 Data: Variable [TempVariable2] = [MemberOrder1-4] / [TempVariable0] This means to place TempVariable2 in that top slot, MemberOrder1-4 below there, change the "+" to a "/", and place TempVariable0 in the last slot. Just look at the screen. What it says on the screen pretty much exactly matches what I've written. Also, after you choose your command, take a look at the command line. It will look exactly like I wrote it. Just take your time and be very careful with your script writing. Messing up one variable will mess up the entire system and cause endless headaches. Good luck, Doan the Nado p.s. I'd also like to remind you: Suggestion 3. Keep double-posting to a minimum. That is, you shouldn't follow your own posts with another post of your own. Instead, click the "Modify" button at the upper right of your post. This would've been a perfect case in which it would've been better to just click "Modify" and change your last post rather than to make another one. This isn't exactly a warning, but I'm just alerting to you to the meaning of the rules as I wrote them.
|
|
Sion
RPGM2 Helper
The Prodigal has returned!
Hero of the forsaken winds...
Posts: 152
|
Post by Sion on Oct 14, 2004 18:27:22 GMT -5
k... I understand I'll have it working in no time. That's what 'I though it meant...
|
|
|
Post by Tacticalman on Oct 17, 2004 14:08:29 GMT -5
Wow.. this boards cool... anyways, for my partymembers, i just created one and used the normal variables for my 'party data' member because i didn't understand how to isolate digits in a variable.
|
|
|
Post by Tacticalman on Oct 17, 2004 14:18:50 GMT -5
8 party members would be awesome, but can the DBS switch partymembers during battle? otherwise, im going to have to make a CBS... Has anyone done this?
|
|
|
Post by vespuleth on Oct 17, 2004 14:27:31 GMT -5
has anyone made the dbs switch characters, or has anyone written a cbs?
i think both can be accomplished, but i think making the dbs switch characters would take alot of work. you would have to somehow trick the system into saving the primary members data, and load the secondary members data, and modify it from then on. might take some work, and you definitely need to know scripting.
as for writing a cbs, yes. i have. i wrote a tactical type cbs, with the help of another board member. and no, i wont be posting the scripts. for one, because it is customed to my game (should i ever work on it again), and two, if you cant write a cbs, you probably shouldnt mess w/ it, because regardless of how you do it, your gonna have to troubleshoot.
if you want to see the beginning of that cbs, go to the agetec forum at ezboard, and search for a thread called 'Tactical Movement Grid System'. that will get you started.
also, any help you need, ill be glad to assist you with. i just wont be posting the exact scripts as my first post. we can build up to it.
|
|
|
Post by Tacticalman on Oct 17, 2004 14:48:01 GMT -5
Ves that didn't work.. like if you had a wall in that movement system, Too high to walk on and the other sidde was low enough to get to, it would lett u go.. so i sorta gave up, because i didn't get it AKA im 14 and i figured i should not use anything in my game i didn't know how to do.
|
|
|
Post by vespuleth on Oct 17, 2004 16:40:19 GMT -5
we found a way around what your talkin about. youll have to check the last posts in that thread. mine doesnt allow you to do it.
ummm... if you didnt understand that, you may want to stick to the dbs, because any cbs is gonna be some pretty complex programming.
|
|
|
Post by Doan the Nado on Oct 18, 2004 4:11:57 GMT -5
Back to the original topic ... I'm curious how this is coming, HolyFlame. Were you able to get those scripts working properly? You will need a few additional scripts to control adding members and removing members, so I need to know when you get these scripts put in so that we can move on to the next step and get this 8-party member system complete. Lemme know, Doan the Nado
|
|
Sion
RPGM2 Helper
The Prodigal has returned!
Hero of the forsaken winds...
Posts: 152
|
Post by Sion on Oct 26, 2004 20:06:46 GMT -5
almost done! I got the 1st part done I just need to do the second part! 10/26/04
|
|
|
Post by Doan the Nado on Oct 26, 2004 20:14:15 GMT -5
Cool. Let me know when you're ready for the Join Party and Leave Party scripts. That's all that's left, I think.
Almost complete,
Doan the Nado
|
|