• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

Eng. + Deu. Baalscript

Pikachu

Well-known member
Registriert
28 Februar 2006
Beiträge
1.092
Punkte Reaktionen
0
Aufgrund einiger Threads, über die verschiedenen Sprachen des Baalscriptes, ist eine Lösung entstanden. Diese ermöglicht das Script für die englische Diabloversion, als auch für die deutsche Diabloversion zur selben Zeit im selben Channel laufen zu lassen d.h. wenn jemand ein Baal- oder Diarun erstellt, wird das erstellte Spiel, je nach deutscher oder englischer Version im Channel angekündigt. Dies würde ebenso mit anderen Sprachen funktionieren, wenn man das Script anpassen würde:

If Match(LCase(Message), "Ihr Freund * hat sich in ein Diablo II Lord of Destruction-Spiel mit dem Namen *baal* eingeklinkt.", True) Then

Für den deutschen Text müsste den Text einer anderen Sprachversion einfügen.
Aber davon würde ich die Finger lassen, wenn man keine Ahnung hat.

Hier noch ein mal das englische Script.

Und hier das deutsche Script:

'fbp
'1.2
'&Fancy Baal Plugin:Spasm AKA spasm_attack
'&runs:runners:addrunner <account name> <L or NL>:delrunner <account name>
'&12757
'&The runner must be mutual on the bot's account's friends list.:Merely adding the runner to the friends list will not work, you must use the .addrunner command.:In order for the bot to respond, the user must be using Diablo II and must have joined the channel since you last reloaded the script.:This plugin was made for Tyrael's Legion.:Come check us out in Clan Baal!

'//Change the access for commands and other settings here.

fbp_runners_path = BotPath() & "plugins\runners.txt" '//Path to the list of runners. Default is in the plugins folder called runners.txt
Const fbp_runs_access = -1 '//Required access to use .runs command. Default is -1.
Const fbp_editrunners_access = -1 '//Required access to use .runners, .addrunner, and .delrunner commands. Default is 60.
Const fbp_antiabuse_seconds = 10 '//Timer for anti abuse of the .runs command. Default is 45 seconds.


Set Runners = CreateObject("Scripting.Dictionary")
Set Users = CreateObject("Scripting.Dictionary")
Public AntiAbuse, CharLevel, CharLadder, xSecond


Function ReadText(Filepath)
Dim File, FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
ReadText = ""
If FSO.FileExists(Filepath) Then
Set File = FSO.GetFile(Filepath)
If CInt(File.Size) > 0 Then
Set File = FSO.OpenTextFile(Filepath, 1)
ReadText = File.ReadAll()
File.Close
End If
End If
End Function

Function LCFindLine(filepath,text)
Dim Content, Count
text=LCase(text)
Content=ReadText(filepath)
Content=LCase(Content)
vLines = Split(content, vbCrLf)
Count=1
LCFindLine=0
For Each vLine in vLines
If InStr(vline,text) Then
LCFindLine=Count
Exit For
End If
Count=Count+1
Next
End Function

Sub WriteText(Filepath, Text)
Dim FSO, File
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(Filepath, 2, True)
File.Write Text
File.Close
End Sub

Sub DeleteLine(filepath,line)
Dim Content, Count
Content=ReadText(filepath)
vLines = Split(content, vbCrLf)
Count=1
Content=""
For Each vLine in vLines
If Count<Line or Count>Line Then
Content=Content&vLine&vbCrLf
End If
Count=Count+1
Next
If Count<Line Then
Exit Sub
End If
Call WriteText(filepath,Content)
End Sub


Sub SplitQ(Message, Delimiter, Username, Source)

arrMsg = Split(Message, Delimiter)

For i = 0 To UBound(arrMsg)
If Len(curMsg & arrMsg(i) & ", ") < 200 Then
curMsg = curMsg & arrMsg(i) & ", "
Else
DSP Source, curMsg & "[more]", Username, VBBlue
curMsg = arrMsg(i) & ", "
If Not msgCount Mod 2 Then PadQueue
msgCount = msgCount + 1
End If
Next

DSP Source, Left(curMsg, Len(curMsg) - Len(Delimiter)), Username, VBBlue
End Sub

'// Fires when the bot executes.

Sub fbp_Event_Load()

Set FSO = CreateObject("Scripting.FileSystemObject")
Set cFile = FSO.OpenTextFile(fbp_runners_path, 1, True)
Do Until cFile.AtEndOfStream
cLine = cFile.ReadLine
If cLine <> "" Then
Content = Content & cLine & vbCrLf
End If
Loop
cFile.Close
Call WriteText(fbp_runners_path, Content)
Set File = FSO.OpenTextFile(fbp_runners_path, 1, True)
xRunners = 0
Do Until File.AtEndOfStream
Line = Split(File.ReadLine)
If UBound(Line) <> 1 Then
AddChat VBRed, "Line " & xRunner & " in " & fbp_runners_path & " is corrupt!"
Exit Sub
End If
Runners.add Line(0), Line(1)
xRunners = xRunners + 1
Loop
File.Close
AddChat VBBlue, "Loaded " & xRunners & " runners"
TimerInterval "fbp", "AntiAbuse", fbp_antiabuse_seconds
TimerEnabled "fbp", "AntiAbuse", True
AntiAbuse = False

End Sub

'// Fires when the server sends a blue INFO-type message. (Includes ban and kick messages.)

Sub fbp_Event_ServerInfo(Message)

If Match(LCase(Message), "*: *, (mutual) using diablo ii lord of destruction in the game *baal*.", False) Then
Runner = LCase(Split(Split(Message, ",")(0), ": ")(1))
If Runners.Exists(Runner) Then
Game = Split(Split(Message, "game ")(1), " (pri")(0)
Ladder = Runners.Item(Runner)
If (CharLevel >= 60) and (CharLadder = Ladder) Then
AddQ Ladder & " Baal runs in " & Game & ", brought to you by *" & Runner & "."
TimerEnabled "fbp", "NoGames", False
End If
End If
End If

If Match(LCase(Message), "*: *, (mutual) using diablo ii lord of destruction in the game *chaos*.", False) Then
Runner = LCase(Split(Split(Message, ",")(0), ": ")(1))
If Runners.Exists(Runner) Then
Game = Split(Split(Message, "game ")(1), " (pri")(0)
Ladder = Runners.Item(Runner)
If CharLadder = Ladder Then
AddQ Ladder & " Chaos runs in " & Game & ", brought to you by *" & Runner & "."
TimerEnabled "fbp", "NoGames", False
End If
End If
End If

End Sub

'// Fires when a user on battle.net talks.

Sub fbp_Event_UserTalk(Username, Flags, Message, Ping)

If Left(LCase(Message), 10) = BotVars.Trigger & "delrunner" Then
GetDBEntry Username, Access, Flags
If Access >= fbp_editrunners_access Then
fbp_ProcessCommand Username, Message, 1
End If
End If

If LCase(Message) = BotVars.Trigger & "runs" Then
GetDBEntry Username, Access, Flags
If Access >= fbp_runs_access Then
If AntiAbuse = False Then
If Users.Exists(Username) Then
RawData = Users.Item(Username)
Data = Split(RawData, ":")
CharLevel = Data(0)
CharLadder = Data(1)
AddQ "/f l"
AntiAbuse = True
xSecond = 0
TimerInterval "fbp", "NoGames", 1
TimerEnabled "fbp", "NoGames", True
End If
End If
End If
End If


If LCase(Message) = BotVars.Trigger & "runners" Then
GetDBEntry Username, Access, Flags
If Access >= fbp_editrunners_access Then
fbp_ProcessCommand Username, Message, 1
End If
End If


If Left(LCase(Message), 10) = BotVars.Trigger & "addrunner" Then
GetDBEntry Username, Access, Flags
If Access >= fbp_editrunners_access Then
fbp_ProcessCommand Username, Message, 1
End If
End If

End Sub

'// Fires when a whisper is recieved.

Sub fbp_Event_WhisperFromUser(Username, Flags, Message)

If Left(LCase(Message), 10) = BotVars.Trigger & "delrunner" Then
GetDBEntry Username, Access, Flags
If Access >= fbp_editrunners_access Then
fbp_ProcessCommand Username, Message, 3
End If
End If

If Left(LCase(Message), 10) = BotVars.Trigger & "addrunner" Then
GetDBEntry Username, Access, Flags
If Access >= fbp_editrunners_access Then
fbp_ProcessCommand Username, Message, 3
End If
End If

If LCase(Message) = BotVars.Trigger & "runners" Then
GetDBEntry Username, Access, Flags
If Access >= fbp_runs_access Then
fbp_ProcessCommand Username, Message, 3
End If
End If

If Match(LCase(Message), "Ihr Freund * hat sich in ein Diablo II Lord of Destruction-Spiel mit dem Namen *baal* eingeklinkt.", True) Then
Runner = LCase(Split(Split(Message, "Freund ")(1), " hat")(0))
If Runners.Exists(Runner) Then
Game = Split(Split(Message, "Namen ")(1), " eingeklinkt")(0)
Ladder = Runners.Item(Runner)
If (CharLevel >= 60) and (CharLadder = Ladder) Then
AddQ Ladder & " *" & Runner & " has just started a Baal run at the game: " & Game & ". Hurry before it fills up!"
End If
End If
End If

If Match(LCase(Message), "Ihr Freund * hat sich in ein Diablo II Lord of Destruction-Spiel mit dem Namen *chaos* eingeklinkt.", True) Then
Runner = LCase(Split(Split(Message, "Freund ")(1), " hat")(0))
If Runners.Exists(Runner) Then
Game = Split(Split(Message, "Namen ")(1), " eingeklinkt")(0)
Ladder = Runners.Item(Runner)
If CharLadder = Ladder Then
AddQ Ladder & " *" & Runner & " has just started a Chaos run at the game: " & Game & ". Hurry before it fills up!"
End If
End If
End If

If Match(LCase(Message), "Ihr Freund * hat sich in ein Diablo II Lord of Destruction-Spiel mit dem Namen *dia* eingeklinkt.", True) Then
Runner = LCase(Split(Split(Message, "Freund ")(1), " hat")(0))
If Runners.Exists(Runner) Then
Game = Split(Split(Message, "Namen ")(1), " eingeklinkt")(0)
Ladder = Runners.Item(Runner)
If CharLadder = Ladder Then
AddQ Ladder & " *" & Runner & " has just started a Chaos run at the game: " & Game & ". Hurry before it fills up!"
End If
End If
End If


End Sub

'// Fires when a user joins the channel.
'// Level will contain 0 for no-level Warcraft III players or non-Warcraft III products.
'// Message contains the user's PARSED statstring.
'// OriginalStatstring contains the user's UNPARSED statstring.

Sub fbp_Event_UserJoins(Username, Flags, Message, Ping, Product, Level, OriginalStatString)

If Product = "D2XP" Then
If Match(LCase(Message), "*ladder*", False) Then
Data = Level & ":[L]"
Users.Add Username, Data
Else
Data = Level & ":[NL]"
Users.Add Username, Data
End If
End If

End Sub

'// Fires when a user leaves the channel.

Sub fbp_Event_UserLeaves(Username, Flags)

If Users.Exists(Username) Then
Users.Remove Username
End If

End Sub


Sub fbp_Event_PressedEnter(Text)

If LCase(Text) = "/runners" Then
fbp_ProcessCommand BotVars.Username, Text, 4
VetoThisMessage
End If

If Left(LCase(Text), 10) = "/delrunner" Then
fbp_ProcessCommand BotVars.Username, Text, 4
VetoThisMessage
End If

If Left(LCase(Text), 10) = "/addrunner" Then
fbp_ProcessCommand BotVars.Username, Text, 4
VetoThisMessage
End If

End Sub


Sub fbp_ProcessCommand(Username, Text, Source)

If Source = 4 Then
Trigger = "/"
Else
Trigger = BotVars.Trigger
End IF

If Left(LCase(Text), 10) = Trigger & "delrunner" Then
Runner = LCase(Split(Text)(1))
Line = LCFindLine(fbp_runners_path, Runner)
If Line < 1 Then
DSP Source, "Could not find " & Runner & " in the runners list. Make sure you spelled the name correctly.", Username, VBBlue
Else
Call DeleteLine(fbp_runners_path, Line)
Runners.Remove Runner
AddQ "/f r " & Runner
DSP Source, Runner & " has been removed from the runners list.", Username, VBBlue
End If
End If

If LCase(Text) = Trigger & "runners" Then
All = ReadText(fbp_runners_path)
SplitQ All, vbCrLf, Username, Source
End If

If Left(LCase(Text), 10) = Trigger & "addrunner" Then
Stuff = Split(Text)
If uBound(Stuff) <> 2 Then
DSP Source, "Invalid <ladder> argument. Correct usage is /addrunner <account name> <L or NL>", Username, VBBlue
Exit Sub
Else
Runner = LCase(Stuff(1))
Ladder = LCase(Stuff(2))
If Runners.Exists(Runner) Then
DSP Source, Runner & " is already a runner!", Username, VBBlue
Exit Sub
End If
If Ladder = "nl" Then
Set pFSO = CreateObject("Scripting.FileSystemObject")
Set wFile = pFSO.OpenTextFile(fbp_runners_path, 8, True)
wFile.WriteLine(Runner & " [NL]")
wFile.Close
Runners.add Runner, "[NL]"
AddQ "/f a " & Runner
DSP Source, "Non-ladder runner " & Runner & " succesfully added.", Username, VBBlue
ElseIf Ladder = "l" Then
Set pFSO = CreateObject("Scripting.FileSystemObject")
Set wFile = pFSO.OpenTextFile(fbp_runners_path, 8, True)
wFile.WriteLine(Runner & " [L]")
wFile.Close
Runners.add Runner, "[L]"
AddQ "/f a " & Runner
DSP Source, "Ladder runner " & Runner & " succesfully added.", Username, VBBlue
Else
DSP Source, "Invalid <ladder> argument. Correct usage is /addrunner <account name> <L or NL>", Username, VBBlue
End If
End If
End If

End Sub


Sub fbp_AntiAbuse_Timer()

AntiAbuse = False

End Sub


Sub fbp_NoGames_Timer()

If xSecond < 3 Then
xSecond = xSecond + 1
ElseIf xSecond = 3 Then
If CharLevel < 60 Then
AddQ "Sorry, there are no " & CharLadder & " Chaos runs at the moment, try back later."
Elseif CharLevel >= 60 Then
AddQ "Sorry, there are no " & CharLadder & " Baal or Chaos runs at the moment, try back later."
End If
TimerEnabled "fbp", "NoGames", False
End If

End Sub

Nun zum installieren.
Man muss den Stealthbot zweimal installieren haben.
Im Verzeichnis z.B. Stealthbot1 und Stealthbot2, ist im Prinzip egal.
Dort speichert man jeweils im Unterordner „Plugins“ die Scripte, unter dem Namen „fbpFancyBaalPlugin.plug“.

Zum Beispiel:
  • C:/Programme/Stealthbot1/Plugins ---> fbpFancyBaalPlugin.plug.txt (englisches Script)
  • C:/Programme/Stealthbot2/Plugins ---> fbpFancyBaalPlugin.plug.txt (deutsches Script)

Jetzt kann man diese beiden Bots, in den selben Channel bringen.
Man sollte beachten, dass deutsche Spieler, die die deutsche Diabloversion spielen, nicht im englischen Script gespeichter sind, weil es dort nicht wirkt. Dies gilt ebenso andersrum.

Zusätzlich würde ich noch das „autoop.plug.txt“ Plugin empfehlen, je nach dem ob ihr einen silbernen Moderator und einen Kuttenmann, oder zwei silberne Männer haben wollt.
Dieses Script macht euch automatisch zum zweiten Moderator.

Speichert unter dem Namen „autoop.plug.txt“ diesen Text:
'autoop
'1.0

Const autoOpUser = "Account name hier rein " '// Change this

Sub autoop_Event_UserJoins(Username,F,M,Pn,Pr,L,Oss)
If LCase(Username) = LCase(autoOpUser) Then
Command BotVars.Username, "/op " & Username, True
End If
End Sub

Sinnvoll wäre es noch, den Spielern zu erklären, dass es auf die Sprache ankommt, um das Plugin benutzen zu können. Durch ein cmd-Befehl sollte es einfach sein.

.cmdadd x Wort! Hier die Nachricht die erscheinen soll.

X bestimmt die Zahl der Access die ein Spieler braucht um diesen Befehl ausführen zu können.
Demnach müssen die Access von 0-999 sein.

Die zweite Möglichkeit wäre es, alles in das Profil des Botes zu schreiben, immerhin sinds zwei, sollte also kein Problem darstellen.



Und hier noch mal alle Befehle des Scripts zusammengefasst:

.Addrunner accountname L – fügt einen Spieler der Runnerliste hinzu (es erscheint automatisch im Pluginordner eine „runners.txt“ Datei)
.Delrunner accountname – entfernt einen Spieler von der Runnerliste
.Runs - listet die laufenden Runs auf
.Runners – zeig alle Spieler an die in der runners.txt Datei gespeichert sind




Viel Spaß:hy:
 
der listet bei mir aber nicht die games auf die offen sind... woran liegt das??^^
 
Kann ich dir SO auch nicht sagen.

Hast Du was umgeschrieben?
Funktioniert der Rest des Scriptes?
Sind die benötigten Access da und ist der Bot in der F-Liste des jeweiligen (und umgekehrt)?

:hy:
 
ja, gegenseitig in f list und Befehle funzen.. aber der listet games net..
wisst ihr wo man noch andere Baalscripts herbekommt??
 
Zurück
Oben