AnGelBot-Portal²

Normale Version: Kleiner BUG von Sp33d :)) [Allyscript]
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Code:
'================================================
'Erstellt mit [ABP]AVS 1.0.8
'AnGelBot Visual Scripting

'Visit us online @ http://www.AnGelBot-Portal.de/
'================================================
'Programmiert von Sp33d
'================================================

Const ActiveChannels = "#222.sde #masterbot #six.feet.under #gec.sde-intern #mythos.sde"
Const Allis = "Alianz-Datenbank.ini"

Sub Init()
Script "AllyDatenbank v1.2a by Sp33d"
Hook "Chan_Msg"
End Sub

Sub Chan_Msg(Chan, Nick, RegUser, Line)
If InStr(1, " " & LCase(ActiveChannels) & " ", " " & LCase(Chan) & " ") <= 0 Then Exit Sub

Select Case LCase(Param(Line, 1))
Case "!add"
If (Not IsValidCoord(Param(Line, 2))) Or Param(Line, 3) = vbNullString Then
SendLine "NOTICE " & Nick & " :Benutzung: !add <Koordinate> <Allianz> (fügt der Koordinate die Allianz und andersrum zu)", 2
Else
Koordinaten = Param(Line, 2)
Allianz = Param(Line, 3)
If ReadINIString(Koordinaten, "Allianz", vbNullString, Allis) <> vbNullString And ReadINIString(Koordinaten, "Allianz", vbNullString, Allis) <> Allianz Then
SendLine "NOTICE " & Nick & " :9,14Die alte Allianz von " & Koordinaten & " war " & ReadINIString(Koordinaten, "Allianz", vbNullString, Allis), 2
End If
WriteINIString Koordinaten, "Allianz", Allianz, Allis
WriteINIString Koordinaten, "Host", Mask(Hostmask(Chan, Nick), 3), Allis
WriteINIString Koordinaten, "Nick", Nick, Allis
WriteINIString Allianz, "Koordinaten", ReadINIString(Allianz, "Koordinaten", vbNullString, Allis) & ";" & Koordinaten, Allis
WriteINIString Allianz, "Host", Mask(Hostmask(Chan, Nick), 3), Allis
WriteINIString Allianz, "Nick", Nick, Allis
SendLine "NOTICE " & Nick & " :9,14Die Allianz wurde erfolgreich in meine Datenbank integriert", 2
End If
Case "!ally"
If Not IsValidCoord(Param(Line, 2)) Then
SendLine "NOTICE " & Nick & " :Benutzung: !ally <Koordinate> (gibt die Allianz der Koordinate zurück)", 2
Else
If ReadINIString(Param(Line, 2), "Allianz", vbNullString, Allis) <> vbNullString Then
SendLine "NOTICE " & Nick & " :9,14Die Allianz von " & Param(Line, 2) & " ist " & ReadINIString(Param(Line, 2), "Allianz", vbNullString, Allis),2
Else
SendLine "NOTICE " & Nick & " :9,14Über diese Information verfüge ich nicht", 2
End If
End If
Case "!member"
If Param(Line, 2) = vbNullString Then
SendLine "NOTICE " & Nick & " :Benutzung: !member <Allianz> (gibt alle gespeicherten Koordinaten einer Allianz zurück)", 2
Else
If Trim(ReadINIString(Param(Line, 2), "Koordinaten", vbNullString, Allis)) <> vbNullString Then
Dim strLine, strData
strData = Trim(Right(ReadINIString(Param(Line, 2), "Koordinaten", vbNullString, Allis), Len(Trim(ReadINIString(Param(Line, 2), "Koordinaten", vbNullString, Allis))) - 1))
strLine = Left(strData, 100)
strData = Mid(strData, 100)
SendLine "NOTICE " & Nick & " :9,14Die Koordinaten von " & Param(Line, 2) & " sind: " & strLine, 2
Do While Len(strLine) = 100
SendLine "NOTICE " & Nick & " :» " & strLine, 2  
Loop
Else
SendLine "NOTICE " & Nick & " :9,14Diese Allianz verfügt über keine Koordinaten", 2
End If
End If
Case "!del"
If Not IsValidCoord(Param(Line, 2)) Then
SendLine "NOTICE " & Nick & " :Benutzung: !del <Koordinate> (löscht die Allianz von der Koordinate und andersrum)", 2
Else
If ReadINIString(Param(Line, 2), "Allianz", vbNullString, Allis) <> vbNullString Then
Allianz = ReadINIString(Param(Line, 2), "Allianz", vbNullString, Allis)
Koordinaten = ReadINIString(Allianz, "Koordinaten", vbNullString, Allis)
WriteINIString Allianz, "Koordinaten", Replace(Koordinaten, ";" & Param(Line, 2), vbNullString), Allis
DeleteINIString Param(Line, 2), "Allianz", Allis
SendLine "NOTICE " & Nick & " :9,14Die Allianz von " & Param(Line, 2) & " wurde gelöscht", 2
Else
SendLine "NOTICE " & Nick & " :9,14Der Koordinate " & Param(Line, 2) & " ist keine Allianz zugewiesen", 2
End If
End If
Case "!who"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+m") Then
If ReadINIString(Param(Line, 2), "Nick", vbNullString, Allis) = vbNullString Then
SendLine "NOTICE " & Nick & " :9,14Allianz oder Koordinate besitzt keinen Autor", 2
Else
SendLine "NOTICE " & Nick & " :9,14Der letzte Eintrag stammt von " & ReadINIString(Param(Line, 2), "Nick", vbNullString, Allis) & ". Die Hostmask war " & ReadINIString(Param(Line, 2), "Host", vbNullString, Allis), 2
End If
End If
End Select
End Sub

Function IsValidCoord(Coord)
IsValidCoord = False
If InStr(1, Coord, ":") > 0 Then
If IsNumeric(ParamX(Coord, ":", 1)) And IsNumeric(ParamX(Coord, ":", 2)) Then
IsValidCoord = True
End If
End If
End Function


Hey Sp33d. Beim Befehl !member <ally> postet der BOT ja die ganzen Koords... Nur wenn das mehr als 20 oder so sind.. Spammt der BOT die leute zu die den Befhel gemacht haben... Er hört auch nicht auf damit.. Könntest du das mal bitte ändern ?!

Vielen Dank schonmal
Ich weiß net wo Sp33d mit seinen Gedanken war als er diese Schleife geschrieben hat:
Code:
Do While Len(strLine) = 100
  SendLine "NOTICE " & Nick & " :» " & strLine, 2
Loop

Eine kleine Rechenaufgabe: 1 mal koordinaten = 5 Zeichen
5 Zeichen mal 20 Koordinaten = 100 Zeichen
mit 100 zeichen wird obige bedingung erfüllt, reultat: Eine endlosschleife.
Naja kann mal passieren wenn man die ganze zeit nichts anderes macht, nehme mal an er wollte alle koordinaten einzeln ausgeben lassen hat da nen kleinen denkfehler gehabt.

Kann allerdings auch sein das ich das jetzt komplett verpeile weil ich das script net genau kenne, aber teorethisch kann der fehler nur da liegen. Ich werde mir das script mal genauer angucken und en bisschen umprogrammieren. Eine Frage habe ich aber: Sollen die Koordinaten einzeln für sich in einer Zeile stehen oder alle zusammen in einer zeile?
folgende Fehlermeldung erscheint

Code:
|10:32:43| <BOT> *** Error while executing script 'ally.asc':
|10:32:44| <BOT>     Error   : 0 ()
|10:32:44| <BOT>     Command : Chan_msg "#channel", "Nick", "Nick", "!member ally"
|10:32:44| <BOT> *** End of error message
Referenz-URLs