Adding Classes

From VbGORE Visual Basic Online RPG Engine

POSTED BY: Nick

This is a little tutorial that shows you what code you need to edit to add a new class to your game. Replace "YOUR-CLASS-HERE" with the desired class name.


  • [SERVER]

Look for:


If Class <> ClassID.Mage And Class <> ClassID.Warrior And Class <> ClassID.Rogue Then Exit Sub


And replace it with:


If Class <> ClassID.Mage And Class <> ClassID.Warrior And Class <>  ClassID.Rogue And Class <> ClassID.YOUR-CLASS-HERE  Then Exit Sub


Then look for this:


 'Class IDs
   With ClassID
       'These values must be based off of powers of 2! (Note: The 16th bit is not 2 ^ 16, its -(2 ^ 15) because its signed)
       'If you do not set the values in powers of 2, it will screw up the classes big time.
       .Warrior = 1    '2 ^ 0
       .Mage = 2       '2 ^ 1
       .Rogue = 4      '2 ^ 2 ... etc
       
       'This sets every bit to 1, which means that it will work with every class
       .NoReq = -1 'Read up on how signed binary works if you want to figure out why this is -1


After ".Rogue = 4" add the new class. So it comes to this


 'Class IDs
   With ClassID
       'These values must be based off of powers of 2! (Note: The 16th bit is not 2 ^ 16, its -(2 ^ 15) because its signed)
       'If you do not set the values in powers of 2, it will screw up the classes big time.
       .Warrior = 1    '2 ^ 0
       .Mage = 2       '2 ^ 1
       .Rogue = 4      '2 ^ 2 ... etc
       .YOUR-CLASS-HERE = 6
       'This sets every bit to 1, which means that it will work with every class
       .NoReq = -1 'Read up on how signed binary works if you want to figure out why this is -1


Then look for:


If Not UserList(UserIndex).Class = MapInfo(Map).ClassReq And Not MapInfo(Map).ClassReq = ClassID.NoReq And Not MapInfo(Map).ClassReq = 0 Then
       'MESSAGE USER THEY DON'T MEET CLASS REQ
       Dim ClassName As String
       Select Case MapInfo(Map).ClassReq
           Case ClassID.Mage: ClassName = "Mage"
           Case ClassID.Rogue: ClassName = "Rogue"
           Case ClassID.Warrior: ClassName = "Warrior"
           Case Else: ClassName = "Warrior"
       End Select


And add this line after "Case ClassID.Warrior: ClassName = "Warrior".


Case ClassID.YOUR-CLASS-HERE: ClassName = "YOUR-CLASS-HERE"


  • [CLIENT]


Look for:

'Convert the class by listbox index to the class number
   Select Case UserClass
       Case 0: UserClass = ClassID.Warrior
       Case 1: UserClass = ClassID.Mage
       Case 2: UserClass = ClassID.Rogue
       Case Else: UserClass = ClassID.Warrior
   End Select


After "Case 2: UserClass = ClassID.Rogue" add


Case 3: UserClass = ClassID.YOUR-CLASS-HERE


Then look for:

Create the classes
   With ClassCmb
       .Clear
       .AddItem "Warrior", 0
       .AddItem "Mage", 1
       .AddItem "Rogue", 2
       .ListIndex = 0
   End With


Then under ".AddItem "Rogue", 2" add


.AddItem "YOUR-CLASS-HERE", 3


  • [MAP EDITOR]


First off look for:


      Select Case ClassCmb.ListIndex
           Case 0: MapInfo.ClassReq = -1
           Case 1: MapInfo.ClassReq = ClassID.Warrior
           Case 2: MapInfo.ClassReq = ClassID.Mage
           Case 3: MapInfo.ClassReq = ClassID.Rogue
           Case Else: MapInfo.ClassReq = -1
       End Select


Then add after "Case 3: MapInfo.ClassReq = ClassID.Rogue"

Case 4: MapInfo.ClassReq = ClassID.YOUR-CLASS-HERE


Then Look for:


Private Sub Form_Load()
   'Create the classes
   With ClassCmb
       .Clear
       .AddItem "None", 0
       .AddItem "Warrior", 1
       .AddItem "Mage", 2
       .AddItem "Rogue", 3
       .ListIndex = 0
   End With
End Sub


Add this after ".AddItem "Rogue", 3" :

.AddItem "YOUR-CLASS-HERE" , 4


THAT'S IT... YOUR DONE! WOOOT :)

Personal tools