Mirage Source
Member of the Month (MOTM) Compatible with new version. - 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: Source Code Development (https://mirage-engine.uk/forums/forumdisplay.php?fid=51)
+----- Forum: Mirage Source 4 (Visual Basic 6) (https://mirage-engine.uk/forums/forumdisplay.php?fid=44)
+------ Forum: Tutorials (https://mirage-engine.uk/forums/forumdisplay.php?fid=13)
+------ Thread: Member of the Month (MOTM) Compatible with new version. (/showthread.php?tid=2183)



Member of the Month (MOTM) Compatible with new version. - Nean - 24-09-2008

Okay, so this is just a rip of MOTD, because I was bored, and wanted to see what I could do with my spare time. Member Of The Month is this creation.

[spoiler]Server
Find:
Code:
CSetMotd

Above it add:
Code:
CSetMotm

Then find:
Code:
' set MOTD
    MOTD = GetVar(App.Path & "\data\motd.ini", "MOTD", "Msg")

Above it add:
Code:
' set MOTM
    MOTM = GetVar(App.Path & "\data\motm.ini", "MOTM", "Msg")

Then find:
Code:
' Used for MOTD
Public MOTD As String

Above it add:
Code:
' Used for MOTM
Public MOTM As String

Then find:
Code:
Case CSetMotd
            HandleSetMotd Index, Parse

Above it add:
Code:
Case CSetMotm
            HandleSetMotm Index, Parse

Then find:
Code:
' Send them MOTD
    If LenB(MOTD) > 0 Then
        Call PlayerMsg(Index, "MOTD: " & MOTD, BrightCyan)
    End If

Above it add:
Code:
' Send them MOTM
    If LenB(MOTM) > 0 Then
        Call PlayerMsg(Index, "MOTM: " & MOTM, BrightCyan)
    End If

Then find:
Code:
' :::::::::::::::::::::
' :: Set MOTD packet ::
' :::::::::::::::::::::
Sub HandleSetMotd(ByVal Index As Long, ByRef Parse() As String)
Dim MOTD As String

    ' Prevent hacking
    If GetPlayerAccess(Index) < ADMIN_MAPPER Then
        Call HackingAttempt(Index, "Admin Cloning")
        Exit Sub
    End If
    
    MOTM = Trim$(Parse(1))
    Call PutVar(App.Path & "\data\motd.ini", "MOTD", "Msg", MOTD)
    Call GlobalMsg("MOTD changed to: " & MOTD, BrightCyan)
    Call AddLog(GetPlayerName(Index) & " changed MOTD to: " & MOTD, ADMIN_LOG)
End Sub

Above it add:
Code:
' :::::::::::::::::::::
' :: Set MOTM packet ::
' :::::::::::::::::::::
Sub HandleSetMotm(ByVal Index As Long, ByRef Parse() As String)
Dim MOTM As String

    ' Prevent hacking
    If GetPlayerAccess(Index) < ADMIN_MAPPER Then
        Call HackingAttempt(Index, "Admin Cloning")
        Exit Sub
    End If
    
    MOTD = Trim$(Parse(1))
    Call PutVar(App.Path & "\data\motm.ini", "MOTM", "Msg", MOTM)
    Call GlobalMsg("MOTM changed to: " & MOTM, BrightCyan)
    Call AddLog(GetPlayerName(Index) & " changed MOTM to: " & MOTM, ADMIN_LOG)
End Sub

Client

Find:
Code:
' MOTD change
                Case "/motd"
                    If GetPlayerAccess(MyIndex) >= ADMIN_MAPPER Then
                        If UBound(Command) >= 1 Then
                            'If Len(MyText) > 0 Then
                                SendMOTDChange Command(1)
                            'End If
                        End If
                    End If

Above it add:
Code:
' MOTM change
                Case "/motm"
                    If GetPlayerAccess(MyIndex) >= ADMIN_MAPPER Then
                        If UBound(Command) >= 1 Then
                            'If Len(MyText) > 0 Then
                                SendMOTMChange Command(1)
                            'End If
                        End If
                    End If

Now find:
Code:
Sub SendMOTDChange(ByVal MOTD As String)
Dim Packet As String

    Packet = CSetMotd & SEP_CHAR & MOTD & END_CHAR
    Call SendData(Packet)
End Sub

Above it add:
Code:
Sub SendMOTMChange(ByVal MOTM As String)
Dim Packet As String

    Packet = CSetMotm & SEP_CHAR & MOTM & END_CHAR
    Call SendData(Packet)
End Sub

Now find:
Code:
CSetMotd

Above it add:
Code:
CSetMotm
[/spoiler]
Thats it! I know this was a really shitty tutorial, but it gets the idea across, right? So now, just type /motm "Char name", without the quotation marks... Yup. Shitty code, shitty tut, but it works.


Re: Member of the Month (MOTM) - Doomy - 24-09-2008

wouldnt it be better to have a vote
where they nominate someone
and then the have a deadline
once the deadline is met announce the MOTM


Re: Member of the Month (MOTM) - Nean - 24-09-2008

doomteam1 Wrote:wouldnt it be better to have a vote
where they nominate someone
and then the have a deadline
once the deadline is met announce the MOTM

Well yeah, how thats done is up to you. This is just the basic script. In my project, it's gonna be decided by the staff. Smile


Re: Member of the Month (MOTM) - Jacob - 24-09-2008

This won't work in the newest version of MS4.


Re: Member of the Month (MOTM) - Rebjorn - 20-02-2009

Dugor Wrote:This won't work in the newest version of MS4.

That's the same as saying that the MOTD will not work. I checked what he had done with this code and wrote it without checking this one out. It's just a copy/paste of MOTD, but changing everything that is MOTD to MOTM Smile

So: This code works, even with 3.75b (of course).


Re: Member of the Month (MOTM) Compatible with new version. - Jacob - 20-02-2009

He may have updated it?

At the time it most likely didn't work.


Re: Member of the Month (MOTM) Compatible with new version. - Nean - 20-02-2009

Jesus christ this tut is an embarassment. I might rewrite it to make shit based off of being the MotM


Re: Member of the Month (MOTM) Compatible with new version. - Rebjorn - 20-02-2009

Nean Wrote:Jesus christ this tut is an embarassment. I might rewrite it to make shit based off of being the MotM

How can it be an embarassment? It's just copy/pasting MOTD and changing the same variable over and over again :b. It's good to understand how the MOTD works anyway Big Grin


Re: Member of the Month (MOTM) Compatible with new version. - Matt - 20-02-2009

Read a text file, send the contents of said text file to the client when they login.

Super simple.