Lan UDF für multiplayer spiele

  • Guten Abend,

    ich möchte hier mein Lan-Script präsentieren ;) . Damit ist es möglich einfach lan bzw multiplayer Spiele zu erstellen und da ich gerade ein multiplayer mit der irrlicht engine mache brauchte ich dieses script. Ich hoffe ihr habt noch Ideen oder verbesserungsvorschläge.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $Action_Host = 0
    Global Const $Action_Join = 1

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $PacketBuffer = 128

    [/autoit] [autoit][/autoit] [autoit]

    Global $Host_Socket

    [/autoit] [autoit][/autoit] [autoit]

    Global $IP_Host = @IPAddress1

    [/autoit] [autoit][/autoit] [autoit]

    Global $Socket

    [/autoit] [autoit][/autoit] [autoit]

    Func _server_start($iAction)

    [/autoit] [autoit][/autoit] [autoit]

    TCPStartUp()

    [/autoit] [autoit][/autoit] [autoit]

    If $iAction = $Action_Host Then

    ;Erstellt einen Socket
    $Host_Socket = TCPListen($IP_Host, 65432, 100)
    If $Host_Socket = -1 Then Return 0
    ;Wartet bis ein User gejoint hat
    Do
    $Socket = TCPAccept($Host_Socket)
    Until $Socket >= 0

    [/autoit] [autoit][/autoit] [autoit]

    Return 1
    Else
    ;Versucht eine Verbindung mit dem Host Server herzustellen
    Local $IP_Join = InputBox("IP","Geben sie die Server IP ein")
    For $trye = 1 To 10 Step 1
    ToolTip("Beitretten... #" & 11 - $trye)
    $Socket = TCPConnect($IP_Join, 65432 )
    If $Socket <> -1 Then ExitLoop
    Sleep(100)
    Next
    ToolTip("")
    Return 1
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Server_end()

    TCPCloseSocket($Socket)
    TCPShutdown()

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Server_send_receive($idata)

    TCPSend($Socket, $idata)
    If @error then Return 0

    Return TCPRecv($Socket, $PacketBuffer, 1)

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _create_lan_packet($iarray)

    [/autoit] [autoit][/autoit] [autoit]

    Local $string

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($iarray) - 1 Step 1
    $string &= $iarray[$i] & "*"
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return StringToBinary($String)

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _decode_lan_packet($ipacket)

    Return StringSplit(BinaryToString($ipacket), "*")

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]