AnGelBot-Portal²

Normale Version: neu sortieren @ ini
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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:
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 Sub

es 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 If

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!
Soweit ich weiß kannst du das nicht direkt überprüfen lassen ob 4= da ist, du könntest aber:
If Not ReadIniString("+o", "4", "", MyIni) = "" Then
verwenden. du müsstest dann aber zig viele If's einfügen
höh? ich habs vom system her im lineup genauso gemacht (kannst es dir anschaun, ist n paar threads weiter vorn) und da hat es einwandfrei geklappt, nur hier wills net so wie ich will
help me :/
Referenz-URLs