Author Topic: PNF Current Code  (Read 881 times)

ArticWolve

  • Moderator
  • Hero Member
  • *****
  • Posts: 636
    • View Profile
    • http://
PNF Current Code
« on: November 14, 2008, 05:25:07 PM »
Code: [Select]
'PNF
'1.11
'&Project Neglected Fury:ShadoW and Vector:Mimics Neglected Fury's as closely as scripting will allow
'& Lockdown [on/off]; PNFVersion; Limit <User> <Access To Give Out>; stopcmds; Halt <User>
'&
'& Users must be safelisted or have Access to enter channel.:Can be toggled using .Lockdown On to turn it on, or .Lockdown off to turn it off.
'&
'*Stealthbot Enhancement

'// Define the debugger variable
Dim Debug

'// Is global debugging enabled?
Private PNFDebugGlobal
PNFDebugGlobal = False

'// Move "Passwords" to PNFSettings.ini    

'// DO NOT EDIT THE SETTING BELOW!
PNF_Clan = "Private"

Const PNFSettingsPath = "PNFSettings.ini"

'// Is Access Limitation enabled?
Private PNFAccessLimitBool
PNFAccessLimitBool = True

Private isHalted

Private arrHaltFlags
arrHaltFlags = Array("a", "m", "o")

Private PNFAddSetCommand, PNFLimitUsersAcc

'// Default PNF Setting for "add" and "set" commands
PNFAddSetCommand = 70

'// access for limit command
PNFLimitUsersAcc = 100

Private PNFPass

Sub PNF_event_load()

  AddChat VBOrange, "Project Neglected Fury Version " & psVersions.Item("pnf") & " by ShadoW and Vector is loaded"
  SetSetting "PNF", "Active", True, "", True
  '// This setting determines whether the bot answers the user whispering or not.
  SetSetting "PNF", "Spam", True, "", True
  '// The timer being used for allowing users to join the clan channel.
  TimerInterval "PNF", "Close", 15
  TimerEnabled "PNF", "Close", False
  SetSetting "PNF", "Lockdown", False, "", True
   SetSetting "PNF", "IW", False, "", True
   SetSetting "PNF", "CP", False, "", True
   SetSetting "PNF", "CPMembers", False, "", True
  TimerEnabled "PNF", "Reset", False
  TimerInterval "PNF", "Reset", 5
  PNFLW = VBNullstring

  If GetConfigEntry ("halt", "stoppedCmds", PNFSettingsPath) = "" Then
    WriteConfigEntry "Halt", "stoppedCmds", False, PNFSettingsPath
    isHalted = GetConfigEntry("halt", "stoppedCmds", PNFSettingsPath)
  End If
  
  If InStr(Lcase(GetBotVersion), "beta") Then
    AddChat vbRed, "?cb[PNF]?cb StealthBot beta detected."
    AddChat vbRed, "?cb[PNF]?cb Access limitation feature will have to be manulay overwritten in commands.xml..."
    Exit Sub
  Else
    Debug.Write vbYellow, "Access limitation status: " & PNFAccessLimitBool
    If PNFAccessLimitBool Then
      Debug.Write vbYellow, "Checking limitations of ""add"" and ""set"" commands..."
      If GetConfigEntry("numeric", "add", "access.ini") = "" Or _
         GetConfigEntry("numeric", "set", "access.ini") = "" Then
         Debug.Write vbYellow, "Changing access of ""add"" and ""set"" to 1000..."
         WriteConfigEntry "numeric", "add", 1000, "access.ini"
         WriteConfigEntry "numeric", "set", 1000, "access.ini"
         Debug.Write vbGreen, "Done correcting limitations."
      End If
    Else
       If GetConfigEntry("numeric", "add", "access.ini") <> 70 Or _
          GetConfigEntry("numeric", "set", "access.ini") <> 70 Then
         WriteConfigEntry "numeric", "add", 70, "access.ini"
         WriteConfigEntry "numeric", "set", 70, "access.ini"
         Debug.Write vbYellow, "Set both ""add"" and ""set"" commands to default values."
       End If
    End If
    Debug.Write vbGreen, "Done checking PNF Limitation function."
  End If
End Sub

Sub PNF_Event_PressedEnter(Text)

  If LCase(Text) = "/" & LCase("PNFVarcheck") OR LCase(Text) = "//" & LCase("PNFVarcheck") Then
    VetoThisMessage
    If PNFPass = VBNullstring Then
      AddChat VBRed, "The PNF Password is not set. Please set one using the CP command"
    Else
      AddChat VBGreen, PNFPass
    End If
  End If

  Call PNF_ProcessInput(BotVars.Username, Text, 4)

End Sub

Sub PNF_Event_WhisperFromUser(Username, Flags, Message, Ping)

  GetDBEntry Username, a, f
  
  If Message = PNFPass Then
    If GetSetting("PNF", "CP") AND GetSetting("PNF", "CPMembers") AND a > 0 Then AddQ "/c pub"
    If GetSetting("PNF", "CP") AND Not GetSetting("PNF", "CPMembers") Then AddQ "/c pub"
  Else
    If GetSetting("PNF", "IW") Then Exit Sub
    Call PNF_ProcessInput(Username, Mesage, 3)
  End If

End Sub

Sub PNF_Event_UserTalk(Username, Flags, Message, Ping)
  Call PNF_ProcessInput(Username, Message, 1)
End Sub

Sub PNF_ProcessInput(Username, Message, Origin)

  If Left(Message, Len(BotVars.Trigger)) <> BotVars.Trigger AND Left(Message, 1) <> "/" Then Exit Sub

  GetDBEntry Username, a, f

  cmd = Split(Mid(Lcase(Trim(Message)), Len(BotVars.Trigger) + 1))
  ucmd = Ubound(cmd)

  Select Case cmd(0)
    '// Lockdown
     Case "lockdown"
      If ucmd = 0 Then
        If a < 40 Then Exit Sub

        If GetSetting("PNF", "Lockdown") Then
          DSP Origin, "[PNF] Lockdown is active.", Username, vbWhitename, vbGreen
        Else
          DSP Origin, "[PNF] Lockdown is inactive.", Username, vbWhitename, vbWhite
        End If
      Else
        Select Case cmd(1)
          Case "on"
            SetSetting "PNF", "Lockdown", True, "", True
            DSP Origin, "[PNF] Lockdown Enabled", Username, vbWhitename, vbGreen
          Case "off"
            SetSetting "PNF", "Lockdown", False, "", True
            DSP Origin, "[PNF] Lockdown Disabled", Username, vbWhitename, vbGreen
        End Select
      End If
    '// True Neglected Fury Commands
    Case "IW", "Ignorewhispers"
      If a < 90 Then Exit Sub
      If GetSetting("PNF", "IW") Then
        SetSetting "PNF", "IW", False, "", True
      Else
        SetSetting "PNF", "IW", True, "", True
      End If
    Case "cp"
      GetInternalDataByUsername
      If a < 60 Then Exit Sub
      Select Case cmd(1)
        Case "0"
          SetSetting "PNF", "CP", False, "", True
          SetSetting "PNF", "CPMembers", False, "", True
          PNFPass = VBNullstring
          AddQ "/c pub"
        Case "1"
          If NOT BotFlags = 2 Then AddQ "/c pub"
          SetSetting "PNF", "CP", True, "", True
          SetSetting "PNF", "CPMembers", False, "", True
          PNFPass = Split(Message, " ")(2)
          AddQ "/c priv"
        Case "2"
          If NOT BotFlags = 2 Then AddQ "/c pub"
          SetSetting "PNF", "CPMembers", True, "", True
          SetSetting "PNF", "CP", True, "", True
          PNFPass = Split(Message, " ")(2)
          AddQ "/c priv"
      End Select
    '// Limit Related
    'Case "halt"
      'If ucmd = 0 Then Exit Sub
    'Case "nohalt"
    'Case "stopcmds"
      'isHalted = True
      'SetSetting "halt", "stoppedCmds", True, PNFSettingsPath
      'DSP Origin, "[PNF] All commands temporarily blocked.", Username, vbWhite
    Case "add", "set"
      If Not PNFAccessLimitBool Then Exit Sub

      If a < PNFAddSetCommand Then Exit Sub
    
      '// prevent two "add" or "set" events from occuring
      If InStr(Lcase(uFlags), "a") Then Exit Sub

      If Not IsNumeric(cmd(2)) Then Exit Sub

      getLim = GetConfigEntry("limit", Username, PNFSettingsPath)

      If getLim <> "" Then
        If cmd(2) > getLim Then
          DSP Origin, "[PNF] You have been limited to handing out [ " & getLim & " ] access.", Username, vbWhite
          Exit Sub
        End If

        If cInt(cmd(2)) > a Then Exit Sub
        Command BotVars.Username, "/" & cmd(0) & " " & cmd(1) & " " & cmd(2), True
        DSP Origin, "[PNF] Set " & cmd(1) & "'s access to " & cmd(2) & ".", Username, vbWhite
      Else
        If cInt(cmd(2)) > a Then Exit Sub
        Command BotVars.Username, "/" & cmd(0) & " " & cmd(1) & " " & cmd(2), True
        DSP Origin, "[PNF] Set " & cmd(1) & "'s access to " & cmd(2) & ".", Username, vbWhite
      End If
    Case "limit"
      If a < PNFLimitUsersAcc Then Exit Sub

      GetDBEntry cmd(1), uNum, f

      getLim = GetConfigEntry("limit", cmd(1), PNFSettingsPath)

      '// Query limits
      If Ubound(cmd) = 1 Then
        If getLim = "" And a <> -1 Then
          DSP Origin, "[PNF] " & cmd(1) & " has no limitation.", Username, vbWhite
        ElseIf getLim <> "" And uNum <> - 1 Then
          DSP Origin, "[PNF] " & cmd(1) & " has an access limit of " & getLim & ".", Username, vbWhite
        Else
          DSP Origin, "[PNF[ User not found.", Username, vbWhite
        End If
        Exit Sub
      End If

      If Not IsNumeric(cmd(2)) Then
        DSP Origin, "[PNF] The limitation cmdument must be a numeric value.", Username, vbWhite
        Exit Sub
      End If

      '// User exists?
      If uNum = -1 Then
        DSP Origin, "[PNF] That user doesn't exist. Cannot limit.", Username, vbWhite
        Exit Sub
      End If

      '// Trying to limit a user who has higher access than you?
      If cInt(a) < cInt(uNum) Then
        DSP Origin, "[PNF] " & cmd(1) & " (" & a & " access) has higher access than you (" & a & " access). Unable to limit.", Username, vbWhite
        Exit Sub
      End If

      '// Limiting user to their access level?
      If cInt(cmd(2)) = cInt(uNum) Then
        DSP Origin, "[PNF] Limit is ambiguous to user's access.", Username, vbWhite
        Exit Sub
      End If

      '// Limiting someone to higher access than they currently have?
      If cInt(cmd(2)) > cInt(uNum) Then
        DSP Origin, "[PNF] Unable to limit " & cmd(1) & "'s access. Limit (" & cmd(2) & ") too high for his access (" & a & ").", Username, vbWhite
        Exit Sub
      End If

      WriteConfigEntry "limit", cmd(1), cmd(2), PNFSettingsPath

      DSP Origin, "[PNF] Limited " & cmd(1) & " to giving out " & cmd(2) & " access.", Username, vbWhite
    Case "nolimit"
      If uNum < PNFLimitUsersAcc Then Exit Sub

      If GetConfigEntry("limit", cmd(1), PNFSettingsPath) = "" Then
        DSP Origin, "[PNF] " & cmd(1) & " has no limitations.", Username, vbWhite
        Exit Sub
      End If

      WriteConfigEntry "limit", cmd(1), "", PNFSettingsPath
      DSP Origin, "[PNF] Removed " & cmd(1) & "'s add restrictions.", Username, vbWhite

    '// Other Commands
    Case"pnfversion"
      If a >= 5 Then
        DSP Origin, "Project Neglected Fury Version " & psVersions.Item("pnf") & " by ShadoW", Username, vbWhitename, vbWhite
      End If
    End Select

  '// Call Lockdown Procedure
  If PNFBan = 0 Then
    Call PNF_Lockdown(Username, Access, Flags)
  End If
End Sub

Sub PNF_Close_Timer()
  AddQ "/C priv"
  TimerEnabled "PNF", "Close", False
End Sub

Sub PNF_Event_UserJoins(Username, Flags, Message, Ping, Product, Level, OriginalStatString, Banned)

  If IsSafelisted(Username) Then Exit Sub
    If PNFBan = 0 Then
      Call PNF_Lockdown(Username, Access, Flags)
    End If

End Sub

Sub PNF_Event_UserEmote(Username, Flags, Message)

    If PNFBan = 0 Then
      Call PNF_Lockdown(Username, Access, Flags)
    End If

End Sub

Sub PNF_Lockdown(Username, Access, Flags)

  If GetSetting("PNF", "Lockdown") Then
    GetDBEntry Username, Access, Flags

    If IsSafelisted(Username) Then
      Exit Sub
    End If

    If Access > 0 Then
      Exit Sub
    End If
    
      PNFBan = 1
    
      If PNFBan = 1 Then
        Command BotVars.Username, "//ban " & Username & " [PNF] Lockdown Active", True
        TimerEnabled "PNF", "Reset", True
      End If
      
  Else
    Exit Sub
  End If
End Sub

Sub PNF_Reset_Timer()

  PNFBan = 0
  TimerEnabled "PNF", "Reset", False

End Sub

Function InArray(Arr, Item)
  ReDim elems(Len(Item) - 1)

  For i=0 To Ubound(elems)
    elems(i) = Mid(Item, i+1, 1)
  Next

  For a = 0 To Ubound(Arr)
    For i = LBound(elems) To UBOund(elems)
      If LCase(Arr(a)) = LCase(elems(i)) Then
        InArray = True
        Exit Function
      End If
    Next
  Next
End Function

Function encrypt(text)
  Dim arrSeed, arrIndex
  
  ReDim chars(Len(text)-1)
  
  arrSeed = Array(58, 64, 29, 75, 96, 23, 63)

  For i=0 to Ubound(chars)
    getChar = Mid(text, i+1, 1)
    
    For ii=0 to arrSeed(arrIndex)
      If i mod 2 = 0 Then
        getChar = Chr(Asc(getChar) + 1)
        If Asc(getChar) = 255 Then getChar = Chr(32)
      Else
        getChar = Chr(Asc(getChar) - 1)
        If Asc(getChar) = 32 Then getChar = Chr(255)
      End If
        arrIndex = arrIndex + 1
      If arrIndex = Ubound(arrSeed) Then arrIndex = 0
    Next
    chars(i) = getChar
  Next
  
  encrypt = Join(getChar, "")
End Function

Function decrypt(text)
  Dim arrSeed, arrIndex
  
  ReDim chars(Len(text)-1)
  
  arrSeed = Array(58, 64, 29, 75, 96, 23, 63)

  For i=0 to Ubound(chars)
    getChar = Mid(text, i+1, 1)
    
    For ii=0 to arrSeed(arrIndex)
      If i mod 2 = 0 Then
        getChar = Chr(Asc(getChar) - 1)
        If Asc(getChar) = 32 Then getChar = Chr(255)
      Else
        getChar = Chr(Asc(getChar) + 1)
        If Asc(getChar) = 255 Then getChar = Chr(32)
      End If
        arrIndex = arrIndex + 1
      If arrIndex = Ubound(arrSeed) Then arrIndex = 0
    Next
    chars(i) = getChar
  Next
  
  decrypt = Join(chars, "")
End Function
« Last Edit: December 31, 2008, 10:00:49 AM by Shadow »
Quote
Darker then the darkest shade of night...
    A Rebel at heart... A criminal by mind
    All in the eyes of the beholder... is the truth to life
    But Th---The Only---The One and Only True Master of Death is the Reaper itself
[/color]
[/color]
[div align=\'center\'][img]http://img261.imageshack.us/img261/9411/mydesktopce6.jpg\" border=\"0\" class=\"linked-sig-image\" /][img]http://www.danasoft.com/sig/238153.jpg\" border=\"0\" class=\"linked-sig-image\" /][/div]                     [div align=\'center\']    Click ME for my forums. You know you want to click ME. Come on CLICK ME DAMN IT! But don't click THIS!![/div]