AnGelBot-Portal²

Normale Version: Platzhalter
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
nabend leude ...


hab mal ne Frage .. und zwar bin ich grad am nem script am basteln, das eine Meldung für ein Computerspiel im Chat aufnimmt, und in ne Datei speichert.

Das Problem ist, die Datei wird von nem anderen Programm ausgelesen, daher darf die Syntax nicht verändert werden.

Wie kann ich dem Programm vorgeben, das z.B. bei der Meldung

!speichere Angriff auf Spieler 223 um 13:00


das Script genau den satz so annimmt, und nicht anders.

Ich mein die Worte kann ich ja per Vergleich überprüfen, aber wie kann man Zahlen überprüfen ?

Weil die Zahl ist ja jedesmal anders ...

kann jemand helfen ? Rolling Eyes
Hallo eventuell könnte dir das weiterhelfen

Code:
Sub Init
  Hook "Chan_Msg"
End Sub

Sub Cha_Msg(Chan, NIck, RegUser, Line)
  If LCase(Param(line,1) = "!speichere" Then
    WriteINIString "Last", "Last", getrest(line,2), "deineini.ini"
  End If


Damit wird jetzte alles ab param(line,2) in die INI geschrieben.

Trigger sollte so aussehn: !speichere Angriff auf Spieler * 223 * um * 13:00
Wobei die * ganz wichtig sind, weil dadrann erkennt der bot, wo er was "teilen" soll.

Nun laden diese Zeile, die in der INI steht, in eine Variable.

Code:
UnsereVariable = ReadINIString("Last", "Last", "", "deineini.ini")
AndereVariable = Split(UnsereVariable, "*")

Nun haben wir diese Zeile in 4 Teile geteilt.

Code:
Angriff auf Spieler * 223 * um * 13:00

Teil0: Angriff auf Spieler
Teil1: 223
Teil2: um
Teil3: 13:00

Damit du diese Teile verwenden/ausgeben kannst musst du es so benutzen..
Ich zeige dir es am beispiel einer sendline.

Code:
Sendline "PrivMsg " & Chan & " : Um " & AndereVariable(3) & " Uhr gab es ein Angeriff auf Spieler " & AndereVariable(1),3

So würde die sendline dann ausehen:

Um 13:00 Uhr gab es einen Angriff auf Spieler 223.

Ich hoffe es hilft dir ein wenig

mfg sts
Joa das is schon klasse ... aber ich will verhindern das einer was falsch eingibt ... und wenn doch das er da ne Message bekommt.

z.b. ein User schreibt :


!sende angriff um * 13:00 * ziel war User * 223 *


damit wäre die ganze Syntax falsch .... und der Bot soll das dann so nicht annehmen.


----


Noch ne Frage

ich versteh nich so ganz wie du das mit dem Variablen teilen machen willst ... wo genau soll ich das hinpacken ?

Soll das dann ne zweite sub sein die nach dem speichern durchgeführt wird ? oder wie hast du das gedacht.

------


hier das was ich schon mal hab :

Code:
Const ini_save = "test.ini"
ActiveChannels = "#SuNo.gn"

Sub init
Hook "Chan_Msg"
End Sub

Sub Chan_Msg(Chan, Nick, RegUser, Line)
    If LCase(Param(line,1))="!sende" Then
    If LCase(Param(Line,2))="angriff" Then
    WriteINIString Last, Last, GetRest(Line, 2), ini_save
    Sendline "NOTICE " & Chan & " :Gespeichert !",2
    Var1 = ReadINIString("Last", "Last", "", "ini_save")
    Var2 = Split(Var1, "*")
    WriteINIString Var2, Var2, ini_save

Else If Not LCase(Param(Line,2))="angriff" Then
    Sendline "NOTICE " & Chan & " :Achtung falsche Syntax !",2
End If
End If
End If
End Sub


Der speichert den Satz :

Code:
!sende angriff * 123:4 * auf * 567:8 * ETA * 5:45 *

so ab :

Code:
[]
=angriff * 123:4 * auf * 567:8 * ETA * 5:45 * Flotte * 1 *
gruss, zero
hiho

also erstmal,

Code:
WriteINIString Last, Last, GetRest(Line, 2), ini_save
So ist die Zeile flasch.

Du musst alles in "" setzten was keinen wert hat, also in diesem falle
2x "Last"
Code:
WriteINIString "Last", "Last", GetRest(Line, 2), ini_save


Hier ich hoffe es wird dir hierdurch ein bisschen klarer

Code:
Const ini_save = "test.ini"
ActiveChannels = "#SuNo.gn"

Sub init
  Hook "Chan_Msg"
End Sub

Sub Chan_Msg(Chan, Nick, RegUser, Line)

  If LCase(Param(line,1))="!sende" Then
    If Chan = AktiveChannels Then
      If LCase(Param(Line,2))="angriff" Then
        WriteINIString Last, Last, GetRest(Line, 2), ini_save
        Sendline "NOTICE " & Chan & " :Gespeichert !",2
      Else
        Sendline "NOTICE " & Chan & " :Achtung falsche Syntax !",2
      End If
    End If
  End If

  If LCase(Param(line,1) = "!ausgeben" Then
    If Chan = AktiveChannels Then
      Var1 = ReadINIString("Last", "Last", "", ini_save)
      Var2 = Split(Var1, "*")
      Sendline "PrivMsg " & Chan & " : Um " & var2(3) & " Uhr gab es ein Angeriff auf Spieler " & var2(1),3
    End If
  End If

End Sub

mfg sts
Referenz-URLs