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 :)