-
Content Count
1,023 -
Joined
-
Last visited
-
Days Won
26
Content Type
Profiles
Forums
Blogs
Downloads
Calendar
Gallery
Everything posted by kellessdee
-
@marked if you ever wish to dissect one of my posts, feel free to do so! I actually enjoy stuff like that :P And I really think you are onto something here! Because so many tutorials (specific ones anyways) have been made, maybe it would be easier, and better to do what you are saying, make a database of tutorials, that combines them and applies them to practical use? that way the meat of the learning is already there, it just needs to be combined and connected? If i understand what you are saying. Also, that syntax reference would be ideal, that's an awesome idea...that way the tutorial doesn't bore the reader with syntax, but if they come across something they don't understand, they could be linked to what it means and how it works... If you want to do this and need any help let me know. And sorry razor for kinda hijacking your introduction topic :(
-
Oh okay I see what you are saying now, But what I think you should do is work in the move learning with the experience...for example if your code already works (gives all the pokemon exp) then you simply store the pokemon's current level in a local variable, add exp, if their new level is greater than the temporary variable, check if they learn any moves at that level, ask the player, then move to the next pokemon. If the experience works (and gives each pokemon experience) then naturally after the block of code where you actually give the pokemon experience, is where you should be checking if they learned a new move (because like you said, you need to know which pokemon gained experience right? well if experience is added, at the same time you can check for a new move since at this point they must've gained exp.) And actors are just the name for like characters, if you open the database, the first tab with all the characters are your actors...or are you already doing this? Because if you use the actors (accessible by $game_actors[index] or $game_party.actors[index] for the characters currently in the party) you can easily grab level data, strength, hp, exp etc. Although, it seems like you are modifying the way characters and levels works ALOT so I am not sure if this will necessarily help, you may have to change some things.
-
Hey no worries man! I like to help where I can. :alright:
-
Well to be fair, the person who wrote the script *SHOULD* have mentioned that when he released it...not to hate on him or anything though, its a nice script and of course he doesn't HAVE to mention that (afterall, it was cool enough that he added that functionality) but that's just what I would've done, I find it nice to mention any configuration options, since usually (well I do) one would write a script with the person with no scripting knowledge in mind.
-
Thank you! I appreciate your words :) I may have said it before but I really support anyone who wants to learn programming (well anything new for that matter) but I can actually help with this one! Plus I find if I take the time to explain something to someone, it helps reinforce the knowledge. so it's win-win really :) And I like to help where I can so I am glad it helped
-
There are many caterpillar scripts online, however I can't seem to find one that you can turn off... I will take a look at your current caterpillar script, if it can easily be turned off (without having to rewrite the script) I will let you know. Otherwise, I am actually currently working on a caterpillar script (more in the style of chrono trigger) for my game..however it still needs a lot of tweaking, if you would like that when I finish it I can release (I wasn't planning on releasing, only because I didn't think anyone would find it too useful) if you wanna preview of that one check out my recent blog (although I have actually made it better since) but I will take a look at the script you are using and see if I can fix it Don't worry about it! That's why the game support forum exists (well I hope that's why it exists), I don't have to reply, I just like to help where I can. also the part about learner drivers made me LOL EDIT: XD LMFAO. I am sorry, apparently I should open my eyes sometimes. The script you are currently using actually DOES have the option to turn it on/off, in the script called setup, #-------------------------------------------------------------------------- # * Switch to Enable Party Followers # syntax: nil for none (always active) or switch_id #-------------------------------------------------------------------------- INVISIBLE = nil what you need to do is change nil to a switch id (to an unused in-game switch, just name it caterpillar or something) then when the switch is on, the script will be active, if it is turned off it will be inactive~! Sorry I totally missed that part when looking through it the first time hahah :sweatdrop: EDIT2: Switch_id being the switch number (so switch[00001], the id is 1.)
-
Hey this is cool! THIS IS REALLY COOL. Plus I don't need to actually know html or php to do :D (well obviously i am sure it would help and look nicer, but I don't plan on learning php since I have a class on php later in the year) Awesome find! When I sign up, I will definitely be one of your referrals! (well after all, you did refer me :P)
-
Okay, so if I understand correctly, each player gains separate points, then the total amount of points are added to some sort of pool? And I am not sure if you wish to add it to a in-game variable or not, but I think thats what you mean if not you will probably want to create a new attribute for the Game_Party class. Any who, what you will need to do is make a loop that loops through each actor, figures out the points then adds them to a variable as well as the actors points attribute. The best kind of loop for this would be a for loop or an each loop. I will explain both (I prefer each loops, but essentially they are the exact same thing) Within the loop, you will need to calculate the current actors hp percentage, which is found by (current hp / max hp) * 100. However, if you have had experience with other programming languages (or maybe you know already because of ruby) when you divide 2 integers (or fixnum is what they are called in ruby) the end result is always an integer. Now this is bad because, if we do the math, 25 / 100 = 0.25 so multiply that by 100 and you get 25%. Good right? Well if you were to divide 25 / 100 (as integers) in ruby (well actually any programming language) you get 0. so 0 times 100 is? 0. Thats right. You will never get the percentage you want that way. so, what we can do is (since everything is an object, including integers in ruby) simply convert it into a float or floating point value ex (actor.hp / actor.maxhp.to_f) * 100 integer.to_f will convert any integer into a decimal value, or float then the next step is to decide which amount of points to assign. Most people would automatically jump to a bunch of if statements..which although would be correct and accomplish the same, I would like to show you an easier way (and one of the many reasons I LOVE ruby) you could easily use a case (or aka switch) statement! Now in most languages, for this to work, you would have to create a possibility for each value (1, 2, 3, 4, 5, etc) however with ruby's case statements, you can actually specify ranges! so, think of a for loop in ruby, for i in 0..3 that will loop from 0 to 3 inclusive (0, 1, 2, 3) and 0...3 would be (0, 1, 2) same rules apply so case percent when 1..25 actor.points+= 1 when 26..50 actor.points+= 2 when 51..75 actor.points+= 3 when 76..100 actor.points+= 4 end now, you will also have to add the total points gained by each actor. The easiest way would be to add the points within the case statement to the variable as well as to the actor's points. To call in-game variables (as you might know) you simply write $game_variables[x] = amount (all operators work with this too, such as +=, -= *=, etc) x being the variable number. so right after actor.points += amount, simply add $game_variables[x] += same_amount. so you just gotta take all that and put it in a for or each loop. The loop itself will need to go through each actor in the party, so for actor in $game_party.actors percent = (actor.hp / actor.maxhp.to_f) * 100 case percent when 1..25 actor.points+= 1 $game_variables[x]+= 1 when 26..50 actor.points+= 2 $game_variables[x]+= 2 when 51..75 actor.points+= 3 $game_variables[x]+= 3 when 76..100 actor.points+= 4 $game_variables[x]+= 4 end end just replace [x] with whichever variable you choose to put the number in. this just loops through every element of $game_party.actors, and stores the data in the temporary variable "actor" then we can directly manipulate that specific actor by adding the amounts NOTE: technically the way ruby works, is if make a variable = an instance of an object, such as an actor, that variable will actually temporarily POINT to that instance of the object, so any manipulations will directly affect the original object. If you simply want copy and object, you can use the dup method, ex. variable = object.dup here's an each loop if you were curious $game_party.actors.each {|actor| percent = (actor.hp / actor.maxhp.to_f) * 100 case percent when 1..25 actor.points+= 1 $game_variables[x]+= 1 when 26..50 actor.points+= 2 $game_variables[x]+= 2 when 51..75 actor.points+= 3 $game_variables[x]+= 3 when 76..100 actor.points+= 4 $game_variables[x]+= 4 end } it does the exact same thing, so in the end it is simply personal preference. Now, the most important step will be where to place this code. Where I would place it, is somewhere in a method at the end of the battle, probably where exp and gold is awarded to the player (so we know they have won the battle) I don't know if you are using the default battle system or not, but if you are just add it to the Start_Phase5 in Scene_Battle 2. If you are using a custom battle system, just look for where the exp is gained (well hopefully it is well documented so it's easy to find :D) Hope this helps!
-
SORRY POL, i didn't see your post after jomans! I think you posted as I was writing it up! I will post how to do what you want in a few minutes!!
-
There's a few way to do that as well. If I understand correctly you want the attribute to increase after each level? like strength would? Well, you could either A) Make a module (which is basically an object in ruby that doesn't need to be initialized or created and works great for storing constants) And in the constant create an array, that has 100 elements, and each element would correspond to a level (1 - 99) module Stats_List ATTRIBUTE = [0, 10, 25, 35, ...] # the first element is 0 because level 0 does not exist end To use this, in the class Game_Actor, find the def level=(level) method, this handles leveling up, and just before end, put @attribute = Stats_List::ATTRIBUTE[level] Stats_List::ATTRIBUTE[level] tells ruby to look for a module called stats_list, find the constant ATTRIBUTE and take value at element "level" (which is the actor's new level). This is essentially how rmxp works for strength and other stats, there is a list of values for each corresponding level. Now however, that could be tedious. B) if the amount gained each level is constant, the same amount each time, then you can simply go into the level method and put @attribute += amount amount being however much it is increased each time, so when the character levels up, they gain the same amount. C) Very similar to B) except instead of adding the same value you could write some sort of algorithm that creates some kind of increase.. @attribute += amount * level + (@attribute - 10) not necessarily a very good algorithm to use (it may be, i haven't tested it..) but something a long the lines...its good to use level as an independant variable, to insure it increases at rate specific to level (you could also just do @attribute = amount * level, or something) or just make a formula that increases at a rate that works for you :) Hope this is what you were asking for :)
-
Haha, no problem man :) Yea it isn't easy to learn scripting on your own, especially if you have no background in programming. You gotta really stick to it, and do all the boring tedious stuff before you can really learn anything cool
-
Nice, it must be useful when it comes to making games then, I generally have difficulty finding good music to fit my games (and I try to avoid using other games' music, as I don't want people to play my game then think "oh hey! this other game"... if only I knew how to sprite, compose, and script...But i guess I need to start learning first!)
-
Nice! Quite Epic indeed! Will you be releasing these tunes or will you be using them in something? Either way nice stuff
-
Sorry I answered this but then my internet crapped out Unswitchable_Text is an undeclared constant in the module, line 246 should actually be self.contents.draw_text(0, y, 224, 32, Switch_Setup::Unswitchable, 1) just a little error on the scripters part, nothing that isn't easy to fix though :)
-
Sure man :) it will be a mini-tutorial but it isn't too difficult! And there is a couple of ways to do this. If you open up the script editor, and go to the script "Game_Actor." Game_Actor is the basic class for all actors, if you look through it you will find all the info (name, hp, sp, skills, etc) that an actor has. If you want to add an attribute, go to the "setup" method. This method is called when an actor is created. I am not sure why enterbrain didn't just put all this in the initialize method (as if you look in the initialize method it simply takes the actor_id, then passes it to setup. Kinda inefficient to just use a method to call another method when the original method doesn't really do anything :/) Anyways, you simply have to add a variable points or whatever you want to call it to this section and initialize it to whatever you want it to start off at. But you must make sure this is an instance variable, so it can be used anywhere within the actor class. ex. @points = 0 now whenever an actor is created, it will have a variable that is called points. The next step is to make it accessible by other scripts, to do this you must declare it as an attribute. If you look at the area before initialize, commented as Public instance Variables (which is just a fancier term for attributes) you will see how to do this. If you look there, you see attr_reader :variable_name for every attribute that can be called outside the script. In case you were wondering, there are three different types of attr (or attribute) declaractions: attr_reader - this sets the attribute as read only attr_writer - this sets the attribute as write only attr_accessor - this sets the attribute a read and write. then you need to simply put the name of the variable beside it but instead of an @ symbol, you need a colon ':'. ex. attr_reader :points now points can be called by "$game_party.actors[x].points" (if you noticed, game_party holds the game_actors class which is an array of game_actor classes. game_party is initialized in the $game_party variable, so it can be called anywhere in your game) Right now points is only read only. So at this point there are 2 things you can do, either change that to attr_accessor or define a method that will change the number of points (attr_reader is equal to saying def points return @points end) (attr_writer is like saying def points=(points) @points = points end) (attr_accessor is like defining both those methods) So whether or not you wish to declare it as accessor or write a method would depend strictly on whether you wish to associate any other code with gaining points...for example, if you look at the exp=(exp) method, you will see instead of just adding exp, it makes sure you can't go over the max, and checks if you level up as well (yes, you can mess around with max values here, just be aware you won't be able to change the max within the database however) NOTE: You do not have to name the method as points, it can be called whatever you want. If you want, you can call it gain_points or change_points. And the '=' in variable=(var) is only needed if you want to be able to call the method as $game_party.actors[x].points = number without declaring it as an accessor... you could say def gain_points(points) @points += points end then call it as $game_party.actors[x].gain_points(number) and then it will simply add the number to points...it all depends how you prefer to do this, as it all can achieve the same effect :) So, if points has either a max value or something you may want to define a method that doesn't allow points to go over that max amount or if there is any other kind of checks (like if you don't want it to ever dip below 0) it would be better to define a method, and leave it as "attr_reader" (it will need to be able to be read, in order to display it in the status menu) Next, to display it in the status menu, you will first need to (well, you don't NEED to do this step, however it will make drawing it in the menu much easier and as well as allow you to draw it in any other window, just in case) switch to the Window_Base class. If you look near the bottom, you will already see a lot of methods that draw actor attributes. You will need to make something like this, so essentially define a method that takes an x, y and actor as parameters, and get it to draw the points. to draw the points, you probably will want to draw the word "Points" then the actual value, that way the player knows what that number means. ex def draw_actor_points(x, y, actor) self.contents.draw_text(x, y, width, 32, 'Points: ') self.contents.draw_text(x + width, y, width, 32, actor.points.to_s, 2) end # Set width to however wide of a space you need to draw the points. if you can't decide on a good width, # either experiment or for a sure fire way you can use self.contents.text_size('Points: ').width # it is a method that bitmap classes have, where you can get the size of any string..you can also call height # the height of the space for the text is usually 32, because rmxp always uses this number for line row height # so just to keep it consistent. i had to call actor.points.to_s to convert it into a string, as trying to draw # a number will give you an error. I also right justified it (2) so it looks lined up, however this is not necessary # its just personal preference. once you have created a method that draws the amount of points in a window, simply head over to your Window_Status script. Within that script there are a bunch of calls for drawing different character attributes, so simply put in "draw_actor_points(x, y, actor)" x being whatever x coordinate you want and y being whatever you want. (Note: if you are using the menu I made for you, my script uses several Window_Status_... scripts, so find whichever window you wish to draw this on, and call that method. You can simply pass actor as the actor parameter since the status window takes the actor as a parameter, so just pass it on to the draw_actor_points method.) And presto! You have now added points attribute to the actors, and the status menu will display them! Hope this helps! Also, I can still explain how to add points after battle, but it may be different depending on: whether it is a fixed number, or if it depends on the enemies...and depending if you made the points as "attr_accessor" or if you defined a method to change points. Let me know and I will add the steps to adding points after battle :)
-
Hmmm. there doesn't appear to be any way to turn off the caterpillar system...however if it is for cutscenes that you want to turn it off, then you can always remove the players from the party before the cutscene then add them to the party again. Otherwise you may need a different script
-
So basically, you need the script to give each pokemon that isn't dead experience? Does this only happen if you have the certain item? If you can tell me which variables are used to store the data for each pokemon in the party, I can probably help you out more. I am not sure if I understand the code well enough...but basically, in pseudo code what You would need to do is if player has exp share get entire party else get pokemon who participated in battle end for every pokemon gotten if this pokemon has fainted next pokemon else add exp to this pokemon if this pokemon has gained a level if new move learned add new move end end end end I hope this helps you understand what you would need to do. If I understood your code a little bit better I may be able to help you more specifically. however...wouldn't it be easier to make each pokemon an actor, so you could set their level + skills? then if they level up they will learn the skills, etc? That way you don't have to read out of a file to learn the moves... just a suggestion
-
Oh! Okay, the script creates extra attributes for the actor class, mandatory and available, so you simply have to call the instance of that actor, and the $game_party holds those instances...so for the first party member it would be $game_party.actors[0].mandatory = true and if you want to do this to any party member, just call $game_party.actors[x].mandatory or $game_party.actors[x].unavailable x being the actors position in the party (0 = first actor) And as for the caterpillar script I am not familiar with that one..does it not say if you can or cannot turn it off? Maybe if you link me to the script I will check it out
-
What do you mean by script calls? like how to make the party switcher appear? $scene = Scene_Switch.new this changes the current scene (which would be like whether you are in battle, in the menu title screen, etc they are all scenes) to the party switch scene...Or did you mean something else? if so please clarify And as for the item thingy..to use only from the menu, there is actually an option in the item database called "Occasion" just set it to only from menu. To make it ONLY work on the main character, the best bet would to make a common event (in the database) that does what you want the item to do, except does it to the main character, then just link the item to that common event and set the scope to none. Then when you use the item in the menu, it doesn't choose a player, it calls the common event then does whatever you specified. The downside to this, is that whenever you use an item that calls an event, it leaves the menu. Also I think I found a bug in this script..if you switch your entire party out, then go back into party switcher you will not be able to put them back in your party. It probably shouldn't even let you switch out the entire party...
-
THis is a really cool idea! I think you should finish this, it could standardize tutorials and thus probably make it much easier for people to learn different things!
-
Although you are very right marked, I think he was more looking for something that shows the concepts of rpg maker then kind puts it together in a way that can be useful in making a game yknow? Not necessarily go really in depth on how to make a game, but just an idea... And as for a battle system tutorial...that would be difficult to create a useful tutorial, unless you are teaching someone how to make a SPECIFIC battle system...otherwise all a battle really is is: loop # if real time you would have to pre program the way enemies work then just update everything every frame # if turn-based just do player turn then enemy turn calculate order of acts, act them out # break loop if enemies are dead, game over if player's party is dead # any other special condition stuff end well i guess it could be more in-depth than that...but teaching someone how to code ANY battle system they'd like would be difficult unless they have already grasped *almost* everything rgss and ruby has to offer..and usually at that point the person would probably already have an idea of how to make a battlesystem..or maybe that's just the way I see it.. But i think I have a good way to make this kind of tutorial without making it too complicated and a way to make it so it can actually teach people in an easier way than them having to learn it all themselves (through different specific tutorials) Like the first part will be simply using rpg maker xp, all the basics (events, database, editor) and go through the basic, more useful things in making an rpg then the second part would be all scripting, so for more advanced users, as I wouldn't drag on about syntax, etc; in fact I would probably assume the reader has a basic knowledge of ruby syntax, and just go over the more useful classes and concepts in making an rpg (I personally have pretty much read through the entire help manual...however maybe people don't want to do this or don't know exactly what they are looking for in the help manual? There are a lot of classes I would never have known about if I didn't read the entire manual) Then the third part would be a simple tutorial in how to apply the knowledge in making a game (a simple rpg of course, I wouldn't get into game design or story elements or anything) just basic concepts to get someone started...and maybe a tutorial on how to write your own classes and use them? I wouldn't so much go into detail about writing a specific class, just in general. Does this make sense/sound useful? it's hard for me to say really because i already know this stuff...So i am not sure if this kind of tutorial would be appealing and work for someone aspiring to learn rpg maker. Then those just starting would probably just read the first part, as the scripting part wouldn't do much good until one learns the basic ruby syntax (which there are so many tutorials, for that...well i couldn't think of a witty analogy BUT THERES A LOT)
-
Are you a lost kitten looking for a home? I love cats :P Welcome! You should tell us a little bit about yourself :)
-
Those look really nice! Keep up the good work man! And cool I never realized there was a screenshot thread@! This may motivate to get a little further in my game progress
-
If you ever want to get your game finished, then please read on
kellessdee replied to Maph's topic in Early in Development
LOL i just realized it seems to actually be free...I just signed in with my google account -
If you ever want to get your game finished, then please read on
kellessdee replied to Maph's topic in Early in Development
This looks really cool and useful! It unfortunate it isn't free, however it is sometimes rare to find great things that you don't have to pay for. Either way this looks perfect for this kind of thing! Or any project really