-
Content Count
22 -
Joined
-
Last visited
About Razor
-
Rank
Newbie
- Birthday 04/07/1989
Other
-
Referer
Friend
Profile Information
-
Gender
Male
-
Location
Oregon, USA
Contact Methods
-
Skype
kingrazor001
Engines
-
Prefered Engine
RPG Maker VX Ace
-
Engine Level
Getting There
-
Class Title
Programmer / Scripter
-
Project(s)
Pokemon Essentials
-
One thing I've never done in regards to game design is mapping, since I'm terrible at it. That's one thing I'm going to have to learn how to do if I plan on making any games with RMXP. For the MMO I've been working on for the past few years, a friend of mine has done all the mapping. He's quite good at it.
-
Seems like 20 is about the average age here. At least from the people who have posted in this thread. And programming since you were 11? Sheesh. When I was 11 I barely knew how to use a computer. Video games, on the other hand, I've been playing my entire life.
-
I turned 22 this month. It's interesting how the internet brings together people of all ages.
-
Banned for banning him for knowing pi that big instead of banning him for making a ridiculously long post EDIT: Banning myself because when I clicked on this thread it took me to the wrong page.
-
One thing people rarely put much thought into is game mechanics. Is your game going to be turn-based or real-time? Is there magic in your game? How does it work? What kind of stats do characters in your game have? Health? Strength? Mana? Are all battles one on one? Or are team battles possible? That's just scratching the surface. RPGs can be quite complicated. Especially MMOs.
-
What makes a good game into a great game, in my opinion, is replayability. I've played a lot of good games in my life, but there are a few that I have beaten dozens of times. Why would I play a game over and over again? Because the game is still fun even years after I first played it. I think a good RPG, or a good game in general, will have a degree of replayability. If someone can beat your game a dozen times and still enjoy playing it, you know you've made a great game.
-
I'm really trying to find a way to apply everything I'm reading in all of these tutorials. It's the same problem I originally posted. The tutorials teach you how to make things like windows and variables and classes, but where do I put all of that code? The script editor already seems to be full of stuff even in a blank project. Where do you use that kind of code if you're not making the game from scratch?
-
Sorry, I don't normally check the dates on posts. I didn't realize how old this was. Though on several other forums I'm a member on, it's not uncommon to post in topics that are years old. I'll pay more attention when I'm here.
-
I'm offended! (not at all) I think you're starting to get my idea Marked. If I ever get to the point where I know enough to make my own battle system, I'll make my own in-depth tutorial. Game design is a major interest of mine and one that I've put a lot of time into, so I think I could make an interesting tutorial about that. But, first I have to learn how to do it! I'll keep trying to figure this out on my own the best I can but I'm generally the guy that reads the manual and then does stuff. Not the kind of guy who figures it out for himself. But the difference is, I only have to look at the manual once and then I know it. My problem is that I want to get into some of the most advanced areas of scripting in RGSS when I've been having trouble just learning the basics. The problem is all with application. I need some way to apply what I learn in the tutorials or it's just never going to click.
-
I think this is the actual culprit: pbDisplayPaused(_INTL("{1} grew to Level {2}!",thispoke.name,curlevel)) @scene.pbLevelUp(thispoke,battler,oldtotalhp,oldattack, olddefense,oldspeed,oldspatk,oldspdef) # Finding all moves learned at this level atkdata=pbRgssOpen("Data/attacksRS.dat","rb") offset=atkdata.getOffset(thisPokeSpecies-1) length=atkdata.getLength(thisPokeSpecies-1)>>1 atkdata.pos=offset for k in 0..length-1 atklevel=atkdata.fgetw move=atkdata.fgetw if atklevel==thispoke.level # Learned a new move pbLearnMove(j,move) end end atkdata.close end I believe the code for pbLearnMove is just for how the game behaves regarding the learning of new moves. This piece of code here (within pbGainEXP) appears to be the part of the code that actually triggers the move learning. I think I'm sorta kinda understanding this a little now.
-
I'm sorry, I wasn't specific enough. The code for experience already works the way it should. The script we need is one that checks the player's whole party to see which pokemon have gained experience. Then everytime it finds one, check to see if it is at a level where it would normally learn a move. Then, ask the trainer if they want to teach the pokemon that move. Right now, it only performs that check for the last pokemon to fight. Here's my attempt at writing the code we need in plain language. Perhaps after reading that you can figure out what we need to change with the original language to make it work like this: [b]After battle ends look at all pokemon in the party do not look at pokemon that gained <= 0 exp if pokemon has gained >0 exp check to see if they are at a level where they would normally learn a new move[/b] if pokemon has < 4 moves, automatically teach the pokemon that move if pokemon has >= 4 moves, display message saying "[pokemon] is trying to learn [move], but [pokemon] can only know 4 moves at a time" "delete an old move to make room for the new move?" if player says "yes", display message saying "1..2..3..poof!" "[pokemon] forgot [old move]" "[pokemon] learned [new move]" if player says "no", display message asking "abandon learning [move]?" if player says "yes", display message saying "[pokemon] did not learn [move]" if player says "no", display this message again "[pokemon] is trying to learn [move], but [pokemon] can only know 4 moves at a time" "delete an old move to make room for the new move?" end The code for learning new moves is already very similar to what I just posted, it's just that it only looks for the pokemon that was last used, not at the entire party. I don't know anything about "actors" in RGSS, can you explain that?
-
This goes along with the idea companies are getting in their heads about having all entertainment (games, music, movies, etc) not be something that you purchase, but rather, something that you purchase the right to view/listen to. People won't own any of these forms of media, the companies will. What people would pay for is simply the right to enjoy them. Personally I think the idea is absurd. This kind of thing is why piracy has become so much of a problem. The tighter the grip the companies keep around their products, the more people are going to rebel by pirating it. They really should just stop caring about it so much. People that are willing to buy your product will buy it. People that are not willing to buy your product will never buy it.
-
I really wish I understood this better. I'm not sure exactly what to change and where to put everything. Also, the more I think about it, the more I realize it's not so much whether the pokemon participated in the battle, but whether or not they gained experience. There's an item called the exp share and if a pokemon holds that, it will gain exp even if it is not in battle. So we need the code to look for all pokemon that gained exp and see if any of them reached a level where they would normally learn a new move. Here's the code for experience: def pbGainEXP return if !@internalbattle successbegin=true for i in 0..3 # Not ordered by priority if !@doublebattle && pbIsDoubleBattler?(i) @battlers[i].participants=[] next end if pbIsOpposing?(i) && @battlers[i].participants.length>0 && @battlers[i].hp<=0 dexdata=pbOpenDexData battlerSpecies=@battlers[i].species # Current species, not original species; also using R/S base EXP pbDexDataOffset(dexdata,battlerSpecies,17) baseexp=dexdata.fgetb level=@battlers[i].level dexdata.close # First count the number of participants partic=0 expshare=0 for j in @battlers[i].participants @participants[j]=true # Add participant to global list end for j in @battlers[i].participants next if !@party1[j] || !pbIsOwner?(0,j) partic+=1 if @party1[j].hp>0 && !@party1[j].egg? end for j in 0..@party1.length-1 next if !@party1[j] || !pbIsOwner?(0,j) expshare+=1 if @party1[j].hp>0 && !@party1[j].egg? && isConst?(@party1[j].item,PBItems,:EXPSHARE) end # Now calculate EXP for the participants if partic>0 if !@opponent && successbegin && pbAllFainted?(@party2) @scene.pbWildBattleSuccess successbegin=false end for j in 0..@party1.length-1 thispoke=@party1[j] next if !@party1[j] || !pbIsOwner?(0,j) ispartic=0 level=@battlers[i].level haveexpshare=(isConst?(thispoke.item,PBItems,:EXPSHARE)) ? 1 : 0 for k in @battlers[i].participants ispartic=1 if k==j end if thispoke.hp>0 && !thispoke.egg? exp=0 if expshare>0 exp=((level*baseexp/7).floor/2).floor exp=(exp/partic).floor*ispartic+(exp/expshare).floor*haveexpshare elsif ispartic==1 exp=((level*baseexp/7).floor/partic).floor end isOutsider=(thispoke.trainerID!=self.pbPlayer.id || (thispoke.language!=0 && thispoke.language!=self.pbPlayer.language)) exp=(exp*3/2).floor if @opponent exp=(exp*3/2).floor if isOutsider exp=(exp*3/2).floor if isConst?(thispoke.item,PBItems,:LUCKYEGG) growthrate=thispoke.growthrate newexp=PBExperience.pbAddExperience(thispoke.exp,exp,growthrate) exp=newexp-thispoke.exp; if exp > 0 if isOutsider pbDisplayPaused(_INTL("{1} gained a boosted\r\n{2} Exp. Points!",thispoke.name,exp)) else pbDisplayPaused(_INTL("{1} gained\r\n{2} Exp. Points!",thispoke.name,exp)) end #Gain effort value points, using RS effort values totalev=0 for k in 0..5 totalev+=thispoke.ev[k] end dexdata=pbOpenDexData pbDexDataOffset(dexdata,battlerSpecies,23) for k in 0..5 evgain=dexdata.fgetb if isConst?(thispoke.item,PBItems,:MACHOBRACE) evgain*=2 end if evgain>0 # Can't exceed overall limit if totalev+evgain>510 # Bug Fix: must use "-=" instead of "=" evgain-=totalev+evgain-510 end # Can't exceed stat limit if thispoke.ev[k]+evgain>255 # Bug Fix: must use "-=" instead of "=" evgain-=thispoke.ev[k]+evgain-255 end # Add EV gain thispoke.ev[k]+=evgain if thispoke.ev[k]>255 print "Single-stat EV limit 255 exceeded.\r\nStat: #{k} EV gain: #{evgain} EVs: #{thispoke.ev.inspect}" thispoke.ev[k]=255 end totalev+=evgain if totalev>510 print "EV limit 510 exceeded.\r\nTotal EVs: #{totalev} EV gain: #{evgain} EVs: #{thispoke.ev.inspect}" end end end newlevel=PBExperience.pbGetLevelFromExperience(newexp,growthrate) tempexp=0 curlevel=thispoke.level thisPokeSpecies=thispoke.species if newlevel<curlevel debuginfo="#{thispoke.name}: #{thispoke.level}/#{newlevel} | #{thispoke.exp}/#{newexp} | gain: #{exp}" raise RuntimeError.new( _INTL("The new level ({1}) is less than the Pokémon's\r\ncurrent level ({2}), which shouldn't happen.\r\n[Debug: {3}]", newlevel,curlevel,debuginfo)) return end if thispoke.respond_to?("isShadow?") && thispoke.isShadow? thispoke.exp+=exp else tempexp1=thispoke.exp tempexp2=0 # Find battler battler=pbFindPlayerBattler(j) loop do #EXP Bar animation startexp=PBExperience.pbGetStartExperience(curlevel,growthrate) endexp=PBExperience.pbGetStartExperience(curlevel+1,growthrate) tempexp2=(endexp<newexp) ? endexp : newexp thispoke.exp=tempexp2 @scene.pbEXPBar(thispoke,battler,startexp,endexp,tempexp1,tempexp2) tempexp1=tempexp2 curlevel+=1 break if curlevel>newlevel oldtotalhp=thispoke.totalhp oldattack=thispoke.attack olddefense=thispoke.defense oldspeed=thispoke.speed oldspatk=thispoke.spatk oldspdef=thispoke.spdef thispoke.calcStats battler.pbUpdate if battler @scene.pbRefresh if battler.pokemon && @internalbattle battler.pokemon.happiness+=2 battler.pokemon.happiness=255 if battler.pokemon.happiness>255 end pbDisplayPaused(_INTL("{1} grew to Level {2}!",thispoke.name,curlevel)) @scene.pbLevelUp(thispoke,battler,oldtotalhp,oldattack, olddefense,oldspeed,oldspatk,oldspdef) # Finding all moves learned at this level atkdata=pbRgssOpen("Data/attacksRS.dat","rb") offset=atkdata.getOffset(thisPokeSpecies-1) length=atkdata.getLength(thisPokeSpecies-1)>>1 atkdata.pos=offset for k in 0..length-1 atklevel=atkdata.fgetw move=atkdata.fgetw if atklevel==thispoke.level # Learned a new move pbLearnMove(j,move) end end atkdata.close end end end end end end # Now clear the participants array @battlers[i].participants=[] end end end
-
Video would probably be nice for some people but I think text would be plenty.