Mirage Source
Simple EXP Carry-Over - Printable Version

+- Mirage Source (https://mirage-engine.uk/forums)
+-- Forum: Mirage Source (Nostalgia) (https://mirage-engine.uk/forums/forumdisplay.php?fid=61)
+--- Forum: Archive (2006-2011) (https://mirage-engine.uk/forums/forumdisplay.php?fid=18)
+---- Forum: Resources (https://mirage-engine.uk/forums/forumdisplay.php?fid=49)
+---- Thread: Simple EXP Carry-Over (/showthread.php?tid=305)



Simple EXP Carry-Over - Tutorial Bot - 13-09-2006

Author: Magnus
Difficulty: 1/5

:: SERVER SIDE ::
Find:
Code:
Sub CheckPlayerLevelUp(ByVal Index As Long)
Beneath it, add:
Code:
Dim ExtraEXP As Long

Now, add this before any of the other comment stuff:
Code:
If GetPlayerExp(Index) > GetPlayerNextLevel(Index) Then
        ExtraEXP = (GetPlayerExp(Index) - GetPlayerNextLevel(Index))
    Else
        ExtraEXP = 0
    End If
Change:
Code:
Call SetPlayerExp(Index, 0)
To:
Code:
Call SetPlayerExp(Index, ExtraEXP)
At the end, add:
Code:
Call CheckPlayerLevelUp(Index)
That's all!


Re: Simple EXP Carry-Over - Joost - 04-03-2008

Slightly better way to do it.


Code:
Sub CheckPlayerLevelUp(ByVal Index As Long)

Dim I As Long, ExtraEXP As Long

If GetPlayerExp(Index) >= GetPlayerNextLevel(Index) Then
    ExtraEXP = (GetPlayerExp(Index) - GetPlayerNextLevel(Index))
        
    Call SetPlayerLevel(Index, GetPlayerLevel(Index) + 1)

    ' Get the ammount of skill points to add
    I = Int(GetPlayerSPEED(Index) / 10)
    If I < 1 Then I = 1
    If I > 3 Then I = 3
            
    Call SetPlayerPOINTS(Index, GetPlayerPOINTS(Index) + I)
    Call SetPlayerExp(Index, ExtraEXP)
    Call GlobalMsg(GetPlayerName(Index) & " has gained a level!", Brown)
    Call PlayerMsg(Index, "You have gained a level!  You now have " & GetPlayerPOINTS(Index) & " stat points to distribute.", BrightBlue)
    Call CheckPlayerLevelUp(Index)
End If

End Sub