TorchBeast Corporal
| Subject: Need Help With Seen Script Sat Jun 13, 2009 6:04 pm | |
| - Code:
-
'ss '1.33 '&Seen Script:J3m '&seen <Username> '&2494
'*********************************************************** '* * '* Seen * '* Plugin for StealthBot 2.6 Rev3 * '* * '* Inspired by: Bever[FoW] * '* Rewritten by: J3m * '* Latest Update: 2006-04-07 * '* * '* Keeps track of when users were online. Great way to * '* tell if a member is inactive. * '* * '* Commands: * '* .seen <username> * '* Return the time since the user last left the channel * '* * '***********************************************************
'// ver 1.31 - Jack '// *Removed call to CreateTimer '// ver 1.32 - Swent '// *Fixed SetSetting calls (settings weren't showing up in pluginsettings.ini) '// *Added Help lines
Private Const ss_name = "Seen Script" Private Const ss_prefix = "ss" Private Const ss_version = "1.32"
Private ss_filepath_seen Private ss_dict
Private ss_access_seen Private ss_flag_seen Private ss_cmd_seen
Sub ss_Event_PHelp(Username, Flags, Message, Origin)
If Len(Trim(Message)) = 0 Then Dsp Origin, ss_name & " " & _ ss_version & " - Keeps track of when users " & _ "where online.", Username, vbYellow Dsp Origin, "Use 'Commands' for a list of commands", _ Username, vbYellow Exit Sub End If Select Case Trim(Message) Case "Commands" Dsp Origin, "Commands in " & _ ss_prefix & ": " & BotVars.Trigger & _ ss_cmd_seen, Username, vbYellow Case BotVars.Trigger & ss_cmd_seen, _ ss_cmd_seen Dsp Origin, "Command: " & _ BotVars.Trigger & ss_cmd_seen & _ " - Return the time since a user was last " & _ "ss", Username, vbYellow Dsp Origin, "Usage: " & BotVars.Trigger & _ ss_cmd_seen & " <user>", Username, vbYellow Case Else Dsp Origin, Message & " is no command in " & _ "plugin " & ss_prefix, Username, vbYellow End Select
End Sub
Sub ss_Event_Load()
Dim fso, f, a, l, v SetSetting "ss", "verbose", "True", _ "If plugin 'talks' to much, set to False", False v = CBool(GetSetting("ss", "verbose"))
If v Then AddChat vbCyan, ss_name & " " & ss_version & _ " by J3m" End If
SetSetting "ss", "filepath_seen", BotPath() & _ "plugins\seen.txt", "Path to file that contains " & _ "the times when users were in the channel", False ss_filepath_seen = CStr(GetSetting("ss", _ "filepath_seen")) SetSetting "ss", "access_seen", 40, _ "Access required to use command seen", False ss_access_seen = CLng(GetSetting("ss", _ "access_seen")) SetSetting "ss", "flag_seen", "", _ "Flag required to use command seen", False ss_flag_seen = CStr(GetSetting("ss", _ "flag_seen")) If Len(ss_flag_seen) > 1 Then ss_flag_seen = Left(ss_flag_seen, 1) End If SetSetting "ss", "cmd_seen", "seen", _ "Name of the command seen", False ss_cmd_seen = CStr(GetSetting("ss", "cmd_seen")) If Len(ss_cmd_seen) = 0 Then ss_cmd_seen = "seen" End If
Set ss_dict = CreateObject("Scripting.Dictionary") ss_dict.CompareMode = 1
Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(ss_filepath_seen, 1, True) Do While Not f.AtEndOfStream l = Trim(f.ReadLine) If Len(l) > 0 Then a = Split(l, "|") If UBound(a) = 1 Then If Not ss_dict.Exists(a(0)) Then ss_dict.Add a(0), a(1) Else ss_dict.Item(a(0)) = a(1) End If End If End If Loop f.Close
If v Then AddChat vbGreen, ss_dict.Count & " seen-entries." End If timerinterval "ss", "flushdict", 600 timerenabled "ss", "flushdict", True
End Sub
Sub ss_Event_UserJoins(Username, Flags, Message, Ping, _ Product, Level, OriginalStatstring) If ss_dict.Exists(Username) Then ss_dict.Item(Username) = "+ " & Now Else ss_dict.Add Username, "+ " & Now End If End Sub
Sub ss_Event_UserLeaves(Username, Flags) If ss_dict.Exists(Username) Then ss_dict.Item(Username) = "- " & Now Else ss_dict.Add Username, "- " & Now End If End Sub
Sub ss_Event_UserTalk(Username, Flags, Message, Ping) ss_ProcessInput Username, Flags, Message, 1 End Sub
Sub ss_Event_UserEmote(Username, Flags, Message) ss_ProcessInput Username, Flags, Message, 2 End Sub
Sub ss_Event_WhisperFromUser(Username, Flags, Message) ss_ProcessInput Username, Flags, Message, 3 End Sub
Sub ss_Event_PressedEnter(Text) ss_ProcessInput BotVars.Username, Flags, Text, 4 End Sub
Private Sub ss_ProcessInput(Username, Flags, Message, _ Origin)
Dim hasAccess, hasFlags, d, h, m, s, n, l, u If Match(Message, BotVars.Trigger & ss_cmd_seen & _ "*", True) Then If Origin = 4 Then VetoThisMessage End If GetDBEntry Username, hasAccess, hasFlag If (hasAccess < ss_access_seen) And Not _ ((ss_flag_seen <> "") And _ (InStr(hasFlags, ss_flag_seen) > 0)) Then Dsp Origin, "Access Denied", Username, vbRed Exit Sub End If u = Trim(Mid(Message, Len(ss_cmd_seen) + 2)) If Len(u) = 0 Then ss_Event_PHelp Username, Flags, _ ss_cmd_seen, Origin Exit Sub End If If LCase(u) = LCase(BotVars.Username) Then Dsp Origin, "Don't call us ... we call you", _ Username, vbGreen Exit Sub End If If GetPositionByName(u) > 0 Then Dsp Origin, u & " is right here.", _ Username, vbCyan If Not ss_dict.Exists(u) Then ss_dict.Add Message, "+ " & Now End If ElseIf ss_dict.Exists(u) Then n = Now l = Mid(ss_dict.Item(u), 3) s = DateDiff("s", l, n) d = CLng(s \ 86400) s = s - d * 86400 h = CLng(s \ 3600) s = s - h * 3600 m = CLng(s \ 60) s = s - m * 60 If d = 0 Then If h = 0 Then If m = 0 Then l = s & " seconds" Else l = m & " minutes and " & s & _ " seconds" End If Else l = h & " hours and " & m & " minutes" End If Else l = d & " days and " & h & " hours" End If If Left(ss_dict.Item(u), 1) = "+" Then u = u & " was last seen joining " Else u = u & " was last seen leaving " End If Dsp Origin, u & "this channel " & _ l & " ago.", Username, vbCyan Else Dsp Origin, "Can't recall having seen " & _ u & " recently.", Username, vbCyan End If End If
End Sub
Sub ss_flushdict_timer() Dim fso, f, x Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(ss_filepath_seen, 2, True) For Each x In ss_dict.Keys f.WriteLine x & "|" & ss_dict.Item(x) Next f.Close End Sub How do i make it so it works on Diablo 2 Lord Of Destruction | |
|