Spieler kicken können

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Sunshiny.

    Spieler kicken können

    Ich hab den TCP/IP-Multichat von kevin nachgebaut, und bin bei der Spieler-kicken-funktion am hängen.

    Wenn ich dem Befehl zum kicken gebe, schliesst der Server meine Verbindung.

    Hier der code:

    Quellcode

    1. If tmp.StartsWith("/kick") Then
    2. Dim Kickname As String = tmp.Remove(0, 6)
    3. For Each Connection In list
    4. Dim connect As String = c.nick
    5. If Connection.nick = Kickname Then
    6. SendToAllClients("--> " & Kickname & " wurde wegen schlechtes verhalten gekickt!")
    7. Sendtoperson("DU WURDEST GEKICKT!, ", Kickname)
    8. Console.WriteLine(Kickname & " wurde wegen schlechtes verhalten gekickt!")
    9. list.Remove(con)
    10. Exit For
    11. End If
    12. Next
    13. End If


    Bitte keine OpenStrictOn kommentare, die bringen mir nix.

    also, was mach ich da falsch?

    mfg
    Hatte eben auch eine vermutung mit dem.

    Und OptionStrictOn ist deshalb käse, weil ich es nicht kapier, und niemand ein tut macht, wie man's anwenden kann...
    Immer nur diese microsoft-links, aber die bringen mir niiiiichhcchchtssss

    Wie kann ich das mit der ForEach schleife korriegieren?

    @oli-f

    Habe überall fehlerblocks eingebaut, aber da ist kein fehler, nur er macht nicht genau, was ich will...
    Wenn ich jemanden kicken will, kickt er mich, statt den anderen.
    ach was...
    Wenn niemand einmal erkläft, was OpenStrict ist, bringt's mir nix, wenn ich es einbaue.
    Und es gibt sicher andere Möglichkeiten, ohne OpenStrictOn.
    google sagt, das ich das OS-On von anfangan machen muss.

    Ich habe aber ein riesigen Browser gebaut, und den kann ich nicht nochmal von anfangan machen, das wäre ein krampf...

    wie mach ich das jetzt, dass es funzt (Ohne OpenStrictOn)

    gfc
    Option Strict On kannst du jeder Zeit einstellen und besser jetzt als Nie...
    Entweder du schreibst in alle deine Dateien in die erste Zeile Option Strict On, oder du suchst mal bei den Optionen...
    Natürlich wirst du ein paar Fehler bekommen, aber die kannst du alle beheben->Was du auch ohne Option Strict On eigt. tun solltest, wenn du diese korrekt behoben hast, treten auch weniger unerwartete Fehler auf...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich hatte recht.
    OpenStrict Bringt nix. Jetzt zeigt es mir einen Fehler an, der nicht exestiert!:
    Fehler bei der Überladungsauflösung, da keine zugreifbare "New" mit diesen Argumenten aufgerufen werden kann:
    "Public Sub New(start As System.Threading.ParameterizedThreadStart)": "Option Strict On" erlaubt keine Einschränkungen in impliziten Typkonvertierungen zwischen der Private Sub ListenToConnection(con As Connection)-Methode und dem Delegaten "Delegate Sub ParameterizedThreadStart(obj As Object)".
    "Public Sub New(start As System.Threading.ThreadStart)": Die Signatur der Private Sub ListenToConnection(con As Connection)-Methode ist mit dem Delegaten "Delegate Sub ThreadStart()" nicht kompatibel.

    So, OpenStrict brin NICHTS!
    Meine frage war, wie ich jemanden kicken kann, nicht wie ich es mit OpenStrict on beheben kann.
    Natürlich wirst du ein paar Fehler bekommen, aber die kannst du alle beheben->Was du auch ohne Option Strict On eigt. tun solltest

    Mehr sag ich dazu mal nicht...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    innerhalb einer foreach schleife darfst du die schleife nicht verändern.
    machs lieber so:

    VB.NET-Quellcode

    1. For i as integer=liste.count-1 to 0 step -1
    2. dim c as connection=liste(i)
    3. '.......
    4. liste.removeat(i)
    5. exit for
    6. '.....
    7. Next


    und außerdem noch das:

    VB.NET-Quellcode

    1. For Each Connection In list'<--- Connection
    2. Dim connect As String = c.nick'<--- das benutzt du gar nicht!
    3. If Connection.nick = Kickname Then
    4. SendToAllClients("--> " & Kickname & " wurde wegen schlechtes verhalten gekickt!")
    5. Sendtoperson("DU WURDEST GEKICKT!, ", Kickname)
    6. Console.WriteLine(Kickname & " wurde wegen schlechtes verhalten gekickt!")
    7. list.Remove(con)'hier entfernst du con, obwohl du eigentlich connection entfernen solltest
    8. Exit For
    9. End If
    10. Next




    p.s. lass das programmieren besser sein, OptionStrictOn bringt definitiv etwas, da es fehler verhindert. und wenn du das nicht einsehen willst bist du echt falsch
    Option Strict On weist dich auf fehler hin die die "schlaue IDE" automatisch behebt!
    Nur irgendwann kommt die IDE nicht mehr von allein drauf. Und damit du sofort lernst dass du z.B einen String mit inhalt "5" nicht mit einen Integer wert multiplizieren sollst....
    Also schalts einfach an und sag nicht Option Strict On bringt nichts!
    Wenn du mal die Fehler genau anschaust sollte eine Autokorrektur dabei sein. Wenn nicht einfach mal rumprobieren!

    Edit:// Der Fehler der nicht existiert existiert schon wird aber meistens von der IDE ausgebessert. Nur hier ist es der fall, dass die IDE es nicht von allein kann!