06.02.2004, 09:19 Uhr
ich habe mir ein commanddatabank script geschrieben bzw bin dabei ...
nu soll beim löschen eines commands der rest der commands neu sortiert werden, damit die zahlenreihenfolge wieder stimmt ...
hier der code:
es geht vor allem um diesen teil:
hab schon diverses ausprobiert, finde den fehler atm aber nicht :/
die erstellte ini sieht am anfang so aus:
[+o]
cmdnr=4
1=!op
2=!deop
3=!v
4=!dev
---
soll nach !delcmd +o !v so aussehen:
[+o]
cmdnr=3
1=!op
2=!deop
3=!dev
---
sieht aber so aus:
[+o]
cmdnr=3
1=!op
2=!deop
4=!dev
argh need help, atm check ichs einfach nicht, vor allem weil ich den gleichen code im lineup script auch benutzt hab und der da einwandfrei gefunzt hat ! ARGH!
nu soll beim löschen eines commands der rest der commands neu sortiert werden, damit die zahlenreihenfolge wieder stimmt ...
hier der code:
Code:
Const MyINI = "commands.ini"
Sub Init
Script "Command-Databank by AMiR"
Hook "Chan_Msg"
End Sub
Sub Chan_Msg(Chan, Nick, RegUser, Line)
Select Case Param(Line, 1)
Case "!addcmd"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+m") Then
If Not Param(Line,2) = "" Then
If Not Param(Line,3) = "" Then
cmdnr=Readinistring((Param(Line,2)), "cmdnr", "", myini)
If cmdnr="" Then
Writeinistring (Param(Line,2)), "cmdnr", "0", myini
End If
For i = 1 To cmdnr
cmd=Readinistring((Param(Line,2)), i, "", myini)
If cmd=Param(Line,3) Then
Sendline "Privmsg " & Chan & " :Command (" & cmd & ") bereits vorhanden",2
Exit Sub
End If
Next
Writeinistring (Param(Line,2)), cmdnr + 1, GetRest(Line,3), myini
Writeinistring (Param(Line,2)), "cmdnr", cmdnr + 1, myini
End If
End If
End If
Case "!cmds"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+o") Then
cmdnr=Readinistring("+o", "cmdnr", "", myini)
Sendline "Privmsg " & Chan & " :Für Flag +o " & cmdnr & " Commands vorhanden:",2
For i = 1 To cmdnr
cmd=Readinistring("+o", i, "", myini)
Sendline "Privmsg " & Chan & " :Command " & i & ": " & cmd,2
Next
End If
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+m") Then
cmdnr=Readinistring("+m", "cmdnr", "", myini)
Sendline "Privmsg " & Chan & " :Für Flag +m " & cmdnr & " Commands vorhanden:",2
For i = 1 To cmdnr
cmd=Readinistring("+m", i, "", myini)
Sendline "Privmsg " & Chan & " :Command " & i & ": " & cmd,2
Next
End If
Case "!delcmd"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+m") Then
If Not Param(Line,2) = "" Then
If Not Param(Line,3) = "" Then
cmdnr=Readinistring(Param(Line,2), "cmdnr", "", MyINI)
For i = 1 To cmdnr
cmd=Readinistring(Param(Line,2), i, "", myini)
If cmd=Param(Line,3) Then
For j = (i + 1) To cmdnr
cmd=Readinistring(Param(Line,2), j, "", MyINI)
Writeinistring Param(Line,2), j - 1, cmd, MyINI
Next
cmdnr=Readinistring(Param(Line,2), "cmdnr", "", MyINI)
Deleteinistring Param(Line,2), i, myini
Writeinistring Param(Line,2), "cmdnr", cmdnr - 1, MyINI
Sendline "Privmsg " & Chan & " :Command (" & Param(Line,3) & ") gelöscht",2
End If
Next
End If
End If
End If
End Select
End Subes geht vor allem um diesen teil:
Code:
Case "!delcmd"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+m") Then
If Not Param(Line,2) = "" Then
If Not Param(Line,3) = "" Then
cmdnr=Readinistring(Param(Line,2), "cmdnr", "", MyINI)
For i = 1 To cmdnr
cmd=Readinistring(Param(Line,2), i, "", myini)
If cmd=Param(Line,3) Then
For j = (i + 1) To cmdnr
cmd=Readinistring(Param(Line,2), j, "", MyINI)
Writeinistring Param(Line,2), j - 1, cmd, MyINI
Next
cmdnr=Readinistring(Param(Line,2), "cmdnr", "", MyINI)
Deleteinistring Param(Line,2), i, myini
Writeinistring Param(Line,2), "cmdnr", cmdnr - 1, MyINI
Sendline "Privmsg " & Chan & " :Command (" & Param(Line,3) & ") gelöscht",2
End If
Next
End If
End If
End Ifhab schon diverses ausprobiert, finde den fehler atm aber nicht :/
die erstellte ini sieht am anfang so aus:
[+o]
cmdnr=4
1=!op
2=!deop
3=!v
4=!dev
---
soll nach !delcmd +o !v so aussehen:
[+o]
cmdnr=3
1=!op
2=!deop
3=!dev
---
sieht aber so aus:
[+o]
cmdnr=3
1=!op
2=!deop
4=!dev
argh need help, atm check ichs einfach nicht, vor allem weil ich den gleichen code im lineup script auch benutzt hab und der da einwandfrei gefunzt hat ! ARGH!