0 Members and 1 Guest are viewing this topic.
actor DudeMan : PlayerPawn{player.displayname "dudeman" //This is where you place the class name.player.soundclass "megaman" //Don't change this unless you know what you're doing.player.damagescreencolor "yellow"player.forwardmove 0.8, 0.8player.sidemove 0.78, 0.78 //Multiply these "move" values by some number to modify the speed. If you want then you can change the ratio between the speeds.player.jumpz 10 //This constant changes jumping. Do note that this number is squared by the engine, so if you want a class that jumps twice as high, you need to set it to 14, not 20.player.colorrange 0 0player.startitem "DudeBlasterWep" //These are the weapons, ammo, and maybe flags you start with.player.startitem "DudeAmmo", 28mass 9999 //Don't change this unless you know what you're doing.gravity 0.8 //Wheee!+NODAMAGETHRUST+DONTBLAST+NOBLOOD+QUICKTORETALIATEdamagefactor "Dummy", 0.0 //Don't change this. At all.damagefactor "Normal", 1.0 //This is how much damage the player takes. Use this instead of health values unless you know what you're doing.//It's recommended that if your class has a high speed then it should have a higher damage factor and a class with lower damage factor should have lower speed. Don't stray away from this formula unless you know what you're doing.damagefactor "DudeKiller", 1.5 //Remember to include weaknesses to freshen up your class.Player.MaxSkinSizeFactor 0, 0scale 2.5States //You can usually do states by copying the Megaman class' states, Ctrl+F and replace PLY1 with your skin, and then changing what's needed.// If you're trying to make multiple classes, look for chapter 2.{Spawn:DUDE A 0DUDE B 1DUDE A 1Goto Spawn+2See:DUDE BCDE 5Goto SpawnMissile:DUDE F 5DUDE G 4Goto Spawn+2<too much time later>}} //If you forget these, then you're an idiot.
actor DudeKiller : BaseClass //I hope you can follow this. If you can't, go back to the first chapter and read closer.{player.displayname "dudekiller"player.forwardmove 1.12, 1.12player.sidemove 1.09, 1.09player.jumpz 14player.startitem "DudeKillerWep"player.startitem "DudeKillerAmmo", 28player.startitem "CanCopy" //Remember this. It'll be important in chapter 4.damagefactor "Normal", 1.5damagefactor "DudeKillerKiller", 1.4 //This doesn't decrease the damage by 10%, it multiplies it by 1.4, so in total it will be 2.1 times more damaging than normal.States{Spawn:DKIL A 0 //Remember to include a skin here. You only need to do it for the Spawn state, the engine takes care of the other states.DKIL B 1DKIL A 1Goto Spawn+2}}
actor DudeBlasterWep : BaseMM8BDMWep{Weapon.AmmoUse1 4 //This is how much ammo is used by the main fire, which might be used with.../*Weapon.AmmoUse2 8 //...this, which is how much ammo is used by the alt fire.*/Weapon.AmmoGive 28Weapon.SlotNumber 1Inventory.Pickupmessage "Why am I doing this?" //Because you're a pillock.Obituary "%o was shot by %k's Dude Blaster." //This is the message at the top of the screen for deaths. %o is the killed, %k is the killer, %g is he/she/it, %h is him/her/it, and %p is his/her/its.weapon.ammotype "DudeAmmo"States{Spawn:WEAP T 0stop //Make sure it has a stop state just in case the server has "Drop Weapons" set.Ready:MCAR X 1loopReady:MCAR H 0 ACS_ExecuteAlways(998,0,173) //You can define a custom translation, but you shouldn't unless you know what you're doing.MCAR H 20 A_WeaponReady //That value (10) is how many tics it takes to regenerate the ammo. With this value you'll regenerate all the ammo in 8 seconds.MCAR H 0 A_GiveInventory("DudeAmmo",1) //Yes, regenerating ammo. It's common practice that classes regenerate ammo. That way, you won't have to mess with WEPACS to make the class pick up ammo. ACS is another tutorial's job.Goto Ready+1Deselect:TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_LowerMCAR H 1 A_LowerLoopSelect:TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_RaiseMCAR H 1 A_RaiseLoop//Don't mess with deselecting and selecting.Fire:MCAR H 0 A_JumpIfNoAmmo("NoAmmo") //If you don't have enough ammo, then you can't fire.MCAR H 0 A_PlaySoundEx("weapon/cfire","Weapon") //This plays a sound.MCAR H 0 A_FireCustomMissile("DudeBlast",0,1,8,0) //This fires a projectile. It has the format <projectile type>,<angle>,<does it use ammo?>,<horizontal offset>,<spawn height>.//Every variable except for the projectile type is optionalMCAR IJ 5MCAR H 15MCAR H 0 A_RefireGoto Ready+1AltFire: //It's also common practice to have altfires to make the class more interesting.MCAR H 0 A_PlaySoundEx("weapon/chargekick","Weapon")MCAR IIJJ 2 A_ChangeVelocity(13,0,momz,CVF_RELATIVE)MCAR J 20Goto Ready+1NoAmmo: //Don't mess with this except with the sprite unless you know what you're doing.MCAR H 1 ACS_Execute(979,0)Goto Ready+1}}actor DudeAmmo : Ammo{inventory.amount 1inventory.maxamount 28 //This should usually be 7, 14, 28, 56, or 112, but you can have other values.+INVENTORY.IGNORESKILL}actor DudeBlast //This is the projectile.{PROJECTILEscale 2.5+RIPPER//This makes the projectile rip through players. It's usually not there.Speed 30 //This is the... just guess.Radius 8Height 8 //Every actor is shaped like a cylinder. These variables define the radius and height of the cylinder.Damage (10) //The average health is 100. You might have to test this if you have the +RIPPER flag.damagetype "DudeBlast" //This is the damage type. It should be used. You can use it to have unusual pain states.Obituary "%o was shot by %k's Dude Blaster." //You can use this to make different projectiles have different obituaries.States{Spawn:MMFX D 4 //This is the sprite the projectile has.loop}}
actor WepCGiver : CustomInventory{inventory.pickupmessage "Power up! I stole this from Max!" //Shut up!inventory.pickupsound "weapon/weaponup"inventory.amount 1inventory.maxamount 1inventory.respawntics 5scale 2.0States{Spawn:TNT1 A 1loopPickup:DUST B 0 A_JumpIfInventory("CanCopy",1, "Pickup2")failPickup2:DUST B 0 A_JumpIfInventory("MegaBusterC",1, "No")DUST B 0 A_GiveInventory("MegaBusterC",1)stopNo:DUST B 0 fail}}actor RollingCutterWepCGiver : WepCGiver replaces RollingCutterWep{Inventory.Pickupmessage "$PU_ROLLINGCUTTER"States{Spawn:WEA2 F 1loopPickup2:DUST B 0 A_JumpIfInventory("RollingCutterWepC",1, "No")DUST B 0 A_GiveInventory("RollingCutterWepC",1)stop}}actor RollingCutterWepC : RollingCutterWep //Now you just have to do this about 80 more times! Have fun!{dropitem "RollingCutterWepCGiver"States{Spawn:TNT1 A 0stop}}
IsSelected RollingCutterWepC{Drawbar"BARAMMO1", "BAREMPTY", Ammo1, vertical, 16, 8;} //Done!IsSelected SuperArmWepC{Drawbar"BARAMMO2", "BAREMPTY", Ammo1, vertical, 16, 8;}IsSelected IceSlasherWepC{Drawbar"BARAMMO3", "BAREMPTY", Ammo1, vertical, 16, 8;}IsSelected HyperBombWepC{Drawbar"BARAMMO4", "BAREMPTY", Ammo1, vertical, 16, 8;}IsSelected FireStormWepC{Drawbar"BARAMMO5", "BAREMPTY", Ammo1, vertical, 16, 8;} IsSelected ThunderBeamWepC{Drawbar"BARAMMO6", "BAREMPTY", Ammo1, vertical, 16, 8;}IsSelected TimeSlowWepC{DrawBar"BARAMMO7", "BAREMPTY", Ammo1, vertical, 16, 8;}IsSelected OilSliderWepC{DrawBar"BARAMMO8", "BAREMPTY", Ammo1, vertical, 16, 8; InInventory OilSliderFlag, 1 {DrawBar"BARFLS1", "NOBAR", OilSliderFlag, vertical, 16, 8;}}<five hours of coffee and four hours of tears later>IsSelected DudeBlasterWep{DrawBar"BARAMM58", "BAREMPTY", Ammo1, vertical, 16, 8;} //Done!<later, in SBARAMMO.H...>IsSelected DudeBlasterWep{Drawbar"VARAMM58", "VAREMPTY", Ammo1, horizontal, 58, 184;}//Done, but who uses horizontal bars?
clearplayerclassesaddplayerclass Dudemanaddplayerclass DudeKilleraddplayerclass DudeKillerKiller<hopefully not much time later>addplayerclass SnapeDudeaddplayerclass KnifeDudeaddplayerclass TopDudeaddplayerclass MineDudeaddplayerclass GlitchDudeaddplayerclass MagicDude