Kleines Problemmm....

05/21/2010 19:52 arisha#1
Wenn ich meinen Chat starte kommt dauernt der Fehler :
==> Variable used without being declared.:
_FileWriteLog(@ScriptDir & "\" & $sGeneralLogName, $sData)
_FileWriteLog(@ScriptDir & "\" & ^ ERROR


Was muss ich oben drüber schreiben???

Global $sGeneralLogName <----Klappt net


thx for help
05/21/2010 20:15 Al Kappaccino#2
Könnt sein das $sGeneralLogName schon irgendwo im gebrauch ist, oder du erstmal $sGeneralLogName einen Wert oder sonstiges zuweisen musst.
Ein script wäre hilfreich
05/21/2010 21:02 arisha#3
Hier ist der Script .... Fehler ist in Zeile 355 oder schaut nach einem Pfeil am Anfang der Zeile ------>>> :

Code:
#include <Array.au3>
#include <File.au3>
#include <GuiListView.au3>
#include <Misc.au3>
#include <Timers.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <Date.au3>

$tGes = _Timer_Init()

LogFile("@compiled: " & @Compiled, "Programm")
LogFile("Pfad zur Exe: " & @AutoItExe, "Programm")
LogFile("PID: " & @AutoItPID, "Programm")
LogFile("AutoItVersion: " & @AutoItVersion, "Programm")
LogFile("", "Programm")

If TCPStartup() <> 1 Then
	MsgBox(48, "Error", "TCP-Service konnte nicht gestartet werden!" & @LF & _
			"Programm wird beendet!")
	Exit
EndIf

LogFile("TCP-Service erfolgreich gestartet", "Programm")

Global Const $sTitle = "Chat Server"
Global Const $sGUITitle = "Client-Verwaltung"
Global Const $sIP = @IPAddress1
Global Const $sPort = 2150
Global Const $MainSocket = TCPListen($sIP, $sPort)
Global Const $sPCNetworkName = @ComputerName
Global Const $sBanListPath = @ScriptDir & "\Banlist.txt"

LogFile("Konstanten definiert", "Programm")
LogFile("", "Programm")
LogFile("Server-IP: " & $sIP, "Programm")
LogFile("Server-Port: " & $sPort, "Programm")
LogFile("Computername: " & $sPCNetworkName, "Programm")
LogFile("", "Programm")
LogFile("Abhör-Anschluss für eingehende Verbindung (Socket): " & $MainSocket, "Programm")
LogFile("", "Programm")

If Not FileExists($sBanListPath) Then _FileCreate($sBanListPath)

Global $sTitleChat = "Multichat"
Global $tTrayTipTimer
Global $bRestart = False
Global $sDataAdmin
Global $iMaxIndexClientList
Global $iHours
Global $iMins
Global $iSecs
Global $iLastMins
Global $iLastHour
Global $Time
Global $aBanList[1]
Global $BanMode
Global $sBannedUser

_FileReadToArray($sBanListPath, $aBanList)
_ArrayDelete($aBanList, 0)

Dim $aUsers[1][4]

If _Singleton($sGUITitle) = 0 Then
	LogFile("Zweite Instanz geschlossen! - Nur eine Instanz erlaubt!", "Programm")
	LogFile("", "Programm")
	Exit
EndIf

Opt("TrayOnEventMode", 1)
Opt("GuiOnEventMode", 1)
Opt("TrayAutoPause", 0)
Opt("TrayMenuMode", 1)

If _VersionCompare(@AutoItVersion, "3.3.1.0") = -1 Then
	AdlibEnable("RefreshStuff")
	AdlibEnable("CheckSocket")
	AdlibEnable("CheckConnection", 2000)
	AdlibEnable("CheckIncoming")
Else
	AdlibRegister("RefreshStuff")
	AdlibRegister("CheckSocket")
	AdlibRegister("CheckConnection", 2000)
	AdlibRegister("CheckIncoming")
EndIf

TrayTipExt("Server IP: " & $sIP & "" & @LF _
		 & "Computername: " & $sPCNetworkName)

TraySetToolTip("Server IP: " & $sIP & "" & @LF _
		 & "Computername: " & $sPCNetworkName)

#Region ### TrayMenu
TrayCreateItem("Verwaltung")
TrayItemSetOnEvent(-1, "ToggleClientGUI")
TrayCreateItem("IP in Zwischenablage kopieren")
TrayItemSetOnEvent(-1, "CopyIPClipboard")
TrayCreateItem("Chatchronik öffnen")
TrayItemSetOnEvent(-1, "OpenChatLog")
TrayCreateItem("")
TrayCreateItem("Server neu starten")
TrayItemSetOnEvent(-1, "_Exit")
TrayCreateItem("Beenden")
TrayItemSetOnEvent(-1, "_Exit")
TrayCreateItem("")
TrayCreateItem("Chat beitreten (als Admin)")
TrayItemSetOnEvent(-1, "_AdminChat")
#EndRegion ### TrayMenu

#Region ### VerwaltungGUI
$hClientverwaltung = GUICreate($sGUITitle, 312, 248, 198, 131)
$Group1 = GUICtrlCreateGroup("Verbundene Clients ", 0, 0, 185, 241)
$ListView1 = GUICtrlCreateListView("Name|IP", 8, 16, 169, 217)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 70)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 95)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Kick", 192, 8, 115, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "KickSelected")
$Button2 = GUICtrlCreateButton("GUI beenden", 192, 104, 115, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "ToggleClientGUI")
$Button3 = GUICtrlCreateButton("Server beenden", 192, 136, 115, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "_Exit")
$Button4 = GUICtrlCreateButton("Server neu starten", 192, 168, 115, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "_Exit")
$Button5 = GUICtrlCreateButton("Erneuern", 192, 72, 115, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "ShowClients")
$Button6 = GUICtrlCreateButton("Bann", 192, 40, 115, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "BanSelected")
GUISetState(@SW_HIDE, $hClientverwaltung)
#EndRegion ### VerwaltungGUI

#Region ### ChatGUI
$hMainGUI = GUICreate($sTitleChat, 750, 424, 203, 150)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 617, 393, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_HSCROLL, $WS_VSCROLL))
GUICtrlSetData(-1, "")
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlSetCursor(-1, 2)
$Input1 = GUICtrlCreateInput("", 0, 392, 521, 29)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlSetCursor(-1, 5)
$Button6 = GUICtrlCreateButton("Senden", 520, 392, 97, 29, BitOR($BS_DEFPUSHBUTTON, $BS_CENTER, $BS_VCENTER, $WS_GROUP))
GUICtrlSetOnEvent(-1, "_Send")
$ListView2 = GUICtrlCreateListView("", 616, 0, 129, 420)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUISetState(@SW_HIDE, $hMainGUI)
#EndRegion ### ChatGUI

#Region ###
$hBanMsgBox = GUICreate("Wirklich verbannen?", 342, 103, 206, 133, BitOR($WS_CAPTION, $WS_BORDER, $WS_CLIPSIBLINGS))
$Label1 = GUICtrlCreateLabel("", 16, 24, 308, 20)
$Button7 = GUICtrlCreateButton("Permanent", 48, 64, 75, 25, $WS_GROUP)
$Button8 = GUICtrlCreateButton("Temporär", 128, 64, 75, 25, $WS_GROUP)
$Button9 = GUICtrlCreateButton("Gar nicht", 208, 64, 75, 25, $WS_GROUP)
GUISetState(@SW_HIDE, $hBanMsgBox)
#EndRegion ###

GUISetOnEvent($GUI_EVENT_CLOSE, "ToggleClientGUI", $hClientverwaltung)
GUISetOnEvent($GUI_EVENT_CLOSE, "HideChatGUI", $hMainGUI)

GUICtrlSetState($Input1, $GUI_FOCUS)

Global $hListView1 = GUICtrlGetHandle($ListView1)
Global $hListView2 = GUICtrlGetHandle($ListView2)

_GUICtrlListView_AddColumn($hListView2, "Andere Clients", 125)

While 1
	Sleep(100)
WEnd

Func CheckSocket()
	$TempSocket = TCPAccept($MainSocket)
	If $TempSocket <> -1 Then
		LogFile("Verbindungsanfrage von " & SocketToIP($TempSocket), "Programm")
		LogFile("", "Programm")
		If MsgBox(48 + 4, "Neuer Cient", "Ein neuer Client will sich mit dem Server verbinden!" & @LF & _
				"Daten:" & @LF & _
				"IP: " & SocketToIP($TempSocket) & @LF & _
				"Zulassen?", 15) = 6 Then
			ReDim $aUsers[UBound($aUsers, 1) + 1][4]
			$aUsers[UBound($aUsers, 1) - 1][0] = $TempSocket
			$aUsers[UBound($aUsers, 1) - 1][1] = SocketToIP($TempSocket)
			TrayTipExt("Neuer Client verbunden: '" & $aUsers[UBound($aUsers, 1) - 1][1] & "'")
			TCPSend($TempSocket, "//Accept")
		Else
			TCPCloseSocket($TempSocket)
		EndIf
	EndIf

	$TempSocket = ""

EndFunc   ;==>CheckSocket

Func CheckIncoming()
	Local $aData[1]
	Local $TempUsers

	For $iIndex = 0 To UBound($aUsers, 1) - 1
		$TempData = TCPRecv($aUsers[$iIndex][0], 8192)
		Select

			Case StringLeft($TempData, 6) = "//Name"
				$TempData = StringTrimLeft($TempData, 7)
				$TempData = StringTrimRight($TempData, 1)
				If $TempData = "" Then ContinueCase
				$aUsers[$iIndex][2] = $TempData
				$TempSearchResultName = _ArraySearch($aUsers, $TempData, _ArraySearch($aUsers, $TempData) + 1)

				If $TempSearchResultName <> -1 And StringLen($aUsers[$TempSearchResultName][2]) > 0 Then
					TCPSend($aUsers[$TempSearchResultName][0], "//Kick(DoubleName)")
					TCPCloseSocket($aUsers[$TempSearchResultName][0])

					For $i = 1 To UBound($aUsers, 1) - 1
						If $aUsers[$i][0] = "" Then ContinueLoop
						TCPSend($aUsers[$i][0], "Server|" & $sIP & "|'" & $aUsers[$TempSearchResultName][2] & "' wurde vom Server gekickt, weil der Name bereits vergeben ist!")
						LogFile("Server => " & $aUsers[$i][2] & ": '" & $aUsers[$TempSearchResultName][2] & "' wurde vom Server gekickt, weil der Name bereits vergeben ist!", "Chat")
					Next
					WriteMemo("'" & $aUsers[$TempSearchResultName][2] & "' wurde vom Server gekickt, weil der Name bereits vergeben ist!", "Server")
					$aUsers[$TempSearchResultName][0] = ""
					$aUsers[$TempSearchResultName][1] = ""
					$aUsers[$TempSearchResultName][2] = ""
					$aUsers[$TempSearchResultName][3] = ""
				EndIf

				For $i = 1 To UBound($aUsers, 1) - 1
					$TempUsers = $aUsers[$i][2] & ";" & $TempUsers
				Next

				For $i = 1 To UBound($aUsers, 1) - 1
					If $aUsers[$i][0] = "" Then ContinueLoop
					TCPSend($aUsers[$i][0], "//Users(" & $TempUsers & ")")
					If $TempSearchResultName = -1 Then LogFile("Server => " & $aUsers[$i][2] & ": '" & $TempData & "' ist dem Chat beigetreten! IP: (" & $aUsers[$i][1] & ")", "Chat")
				Next
				WriteMemo("'" & $TempData & "' ist dem Chat beigetreten!", "Server")
				_GUICtrlListView_AddItem($hListView2, $TempData)

			Case StringLeft($TempData, 5) = "//Key"
				$TempData = StringTrimLeft($TempData, 6)
				$TempData = StringTrimRight($TempData, 1)

				If $TempData = "" Then ContinueCase

				$aUsers[$iIndex][3] = $TempData
				$TempSearchResultKey = _ArraySearch($aBanList, $TempData)

				If $TempSearchResultKey <> -1 Then
					$sBannedUser = _ArraySearch($aUsers, $TempData)
					TCPSend($aUsers[$sBannedUser][0], "//Kick(Banned)")
					TCPCloseSocket($aUsers[$sBannedUser][0])

					For $i = 1 To UBound($aUsers, 1) - 1
						If $aUsers[$i][0] = "" Then ContinueLoop
						TCPSend($aUsers[$i][0], "Server|" & $sIP & "|'" & $aUsers[$sBannedUser][2] & "' ist ein verbannter User!")
						LogFile("Server => " & $aUsers[$i][2] & ": '" & $aUsers[$sBannedUser][2] & "' ist ein verbannter User!", "Chat")
					Next

				Else
					TCPSend($aUsers[$iIndex][0], "//Allowed")
				EndIf

				$aUsers[$sBannedUser][0] = ""
				$aUsers[$sBannedUser][1] = ""
				$aUsers[$sBannedUser][2] = ""
				$aUsers[$sBannedUser][3] = ""

			Case StringLeft($TempData, 6) = "//Quit"
				$TempData = StringTrimLeft($TempData, 7)
				$TempData = StringTrimRight($TempData, 1)
				If $TempData = "" Then ContinueCase
				$TempSearch = _ArraySearch($aUsers, $TempData)
				TCPCloseSocket($aUsers[$TempSearch][0])

				$aUsers[$TempSearch][0] = ""
				$aUsers[$TempSearch][1] = ""
				$aUsers[$TempSearch][2] = ""

				For $i = 1 To UBound($aUsers, 1) - 1
					If $aUsers[$i][0] = "" Then ContinueLoop
					TCPSend($aUsers[$i][0], "//UserQuit(" & $TempData & ")")
					LogFile("Server => " & $aUsers[$i][2] & ": '" & $TempData & "' hat den Chat verlassen!", "Chat")
				Next
				WriteMemo("'" & $TempData & "' hat den Chat verlassen!", "Server")
				_GUICtrlListView_DeleteItem($hListView2, _GUICtrlListView_FindText($hListView2, $TempData))

			Case StringLen($TempData) > 0
				_ArrayAdd($aData, $TempData)

		EndSelect
	Next
	If StringLen($aData[(UBound($aData, 1) - 1)]) > 0 Then

		For $iIndex = 1 To UBound($aData, 1) - 1

			For $i = 1 To UBound($aUsers, 1) - 1
				If $aUsers[$i][0] = "" Then ContinueLoop
				TCPSend($aUsers[$i][0], $aData[$iIndex])
				$aTempData = StringSplit($aData[$iIndex], "|", 2)
				LogFile($aTempData[0] & " => " & $aUsers[$i][2] & ": " & $aTempData[2], "Chat")
			Next
			WriteMemo($aTempData[2], $aTempData[0])
		Next

	EndIf

	$TempUsers = ""
	$TempData = ""
	$TempSearchResultName = ""

EndFunc   ;==>CheckIncoming

Func CheckConnection()
	For $iIndex = 0 To UBound($aUsers, 1) - 1
		If Ping($aUsers[$iIndex][1], 250) = 0 And StringLen($aUsers[$iIndex][1]) > 0 Then
			TCPCloseSocket($aUsers[$iIndex][0])
			$aUsers[$iIndex][0] = ""
			$aUsers[$iIndex][1] = ""
			$aUsers[$iIndex][2] = ""
			For $i = 1 To UBound($aUsers, 1) - 1
				If $aUsers[$i][0] = "" Then ContinueLoop
				TCPSend($aUsers[$i][0], "Server|" & $sIP & "|Die Verbindung zur Maschine von '" & $aUsers[$iIndex][1] & "' ging verloren!")
			Next
		EndIf
	Next
EndFunc   ;==>CheckConnection

Func AFKKick()
EndFunc   ;==>AFKKick

Func SocketToIP($SHOCKET)
	Local $sockaddr, $aRet
	$sockaddr = DllStructCreate("short;ushort;uint;char[8]")
	$aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
			"ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
	If Not @error And $aRet[0] = 0 Then
		$aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
		If Not @error Then $aRet = $aRet[0]
	Else
		$aRet = 0
	EndIf
	$sockaddr = 0
	Return $aRet
EndFunc   ;==>SocketToIP

Func LogFile($sData, $sType)
	Switch $sType
		Case "Chat"
			_FileWriteLog(@ScriptDir & "\" & $sChatLogName, $sData)
		Case "Programm"
;----->>>>			_FileWriteLog(@ScriptDir & "\" & $sGeneralLogName, $sData)
	EndSwitch
EndFunc   ;==>LogFile

Func OpenChatLog()
	TrayItemSetState(@TRAY_ID, 68)
	If Not FileExists(@SystemDir & "\notepad.exe") Then
		MsgBox(48, "Error", "notepad.exe konnte nicht gefunden werden!")
		Return -1
	EndIf
	Run("notepad.exe " & $sChatLogName)
EndFunc   ;==>OpenChatLog

Func ShowClients()
	_GUICtrlListView_DeleteAllItems($hListView1)
	For $i = 0 To UBound($aUsers, 1) - 1
		If StringLen($aUsers[$i][2]) > 0 And StringLen($aUsers[$i][1]) > 0 Then
			$iTempIndex = _GUICtrlListView_AddItem($hListView1, $aUsers[$i][2], 0)
			_GUICtrlListView_AddSubItem($hListView1, $iTempIndex, $aUsers[$i][1], 1, 1)
		EndIf
		$iMaxIndexClientList = _GUICtrlListView_GetItemCount($hListView1)
	Next
EndFunc   ;==>ShowClients

Func KickSelected()
	For $iIndex = 0 To $iMaxIndexClientList - 1
		$TempStatus = _GUICtrlListView_GetItem($hListView1, $iIndex)
		If BitAND($TempStatus[0], 8) = 8 Then
			$TempSearchResult = _ArraySearch($aUsers, _GUICtrlListView_GetItemText($hListView1, $iIndex))
			If $TempSearchResult <> -1 Then
				TCPSend($aUsers[$TempSearchResult][0], "//Kick(Admin)")
				TCPCloseSocket($aUsers[$TempSearchResult][0])
				$aUsers[$TempSearchResult][0] = ""
				$aUsers[$TempSearchResult][1] = ""
				$aUsers[$TempSearchResult][3] = ""

				For $i = 1 To UBound($aUsers, 1) - 1
					If $aUsers[$i][0] = "" Then ContinueLoop
					TCPSend($aUsers[$i][0], "//UserKick(" & $aUsers[$TempSearchResult][2] & ")")
				Next
				_GUICtrlListView_DeleteItem($hListView2, _GUICtrlListView_FindText($hListView2, $aUsers[$TempSearchResult][2]))
				$aUsers[$TempSearchResult][2] = ""
			Else
				MsgBox(48, "Error", "Der User konnte nicht gefunden werden!")
				Return -1
			EndIf
		EndIf
	Next

	_GUICtrlListView_DeleteAllItems($hListView1)
	For $i = 0 To UBound($aUsers, 1) - 1
		If StringLen($aUsers[$i][2]) > 0 And StringLen($aUsers[$i][1]) > 0 Then
			$iTempIndex = _GUICtrlListView_AddItem($hListView1, $aUsers[$i][2], 0)
			_GUICtrlListView_AddSubItem($hListView1, $iTempIndex, $aUsers[$i][1], 1, 1)
		EndIf
	Next

	$TempStatus = ""
	$iTempIndex = ""
	$TempSearchResult = ""

EndFunc   ;==>KickSelected

Func BanSelected()
	For $iIndex = 0 To $iMaxIndexClientList - 1
		$TempStatus = _GUICtrlListView_GetItem($hListView1, $iIndex)
		If BitAND($TempStatus[0], 8) = 8 Then
			$TempSearchResult = _ArraySearch($aUsers, _GUICtrlListView_GetItemText($hListView1, $iIndex))
			If $TempSearchResult <> -1 Then

				Switch MsgBox(48 + 3, "Perm/Temp - Ban", "Soll der User permanent gebannt werden?" & @LF _
						"'JA' = Perm, 'NEIN' = Temp, 'Abbrechen' = Abbruch der Funktion")
					Case 6
						_FileWriteToLine($sBanListPath, _FileCountLines($sBanListPath) + 1, $aUsers[$TempSearchResult][3])
						_ArrayAdd($aBanList, $aUsers[$TempSearchResult][3])
					Case 7
						_ArrayAdd($aBanList, $aUsers[$TempSearchResult][3])
					Case Else
						Return -1
				EndSwitch

				TCPSend($aUsers[$TempSearchResult][0], "//Kick(AdminBan)")
				TCPCloseSocket($aUsers[$TempSearchResult][0])
				$aUsers[$TempSearchResult][0] = ""
				$aUsers[$TempSearchResult][1] = ""
				$aUsers[$TempSearchResult][3] = ""

				For $i = 1 To UBound($aUsers, 1) - 1
					If $aUsers[$i][0] = "" Then ContinueLoop
					TCPSend($aUsers[$i][0], "//UserBan(" & $aUsers[$TempSearchResult][2] & ")")
				Next
				_GUICtrlListView_DeleteItem($hListView2, _GUICtrlListView_FindText($hListView2, $aUsers[$TempSearchResult][2]))
				$aUsers[$TempSearchResult][2] = ""
			Else
				MsgBox(48, "Error", "Der User konnte nicht gefunden werden!")
				Return -1
			EndIf
		EndIf
	Next

	_GUICtrlListView_DeleteAllItems($hListView1)
	For $i = 0 To UBound($aUsers, 1) - 1
		If StringLen($aUsers[$i][2]) > 0 And StringLen($aUsers[$i][1]) > 0 Then
			$iTempIndex = _GUICtrlListView_AddItem($hListView1, $aUsers[$i][2], 0)
			_GUICtrlListView_AddSubItem($hListView1, $iTempIndex, $aUsers[$i][1], 1, 1)
		EndIf
	Next

	$TempStatus = ""
	$iTempIndex = ""
	$TempSearchResult = ""

EndFunc   ;==>BanSelected

Func _AdminChat()

	GUICtrlSetState($Input1, $GUI_FOCUS)
	GUISetState(@SW_SHOW, $hMainGUI)
	TrayItemSetState(@TRAY_ID, 68)

EndFunc   ;==>_AdminChat

Func _Send()

	$sDataAdmin = GUICtrlRead($Input1)

	Select
		Case StringLower($sDataAdmin) = "restart"
			LogFile("Programm wird von Admin per Chatbefehle neugestartet!", "Programm")
			LogFile("", "Programm")
			$bRestart = True
			Exit

		Case StringLower($sDataAdmin) = "shutdown"
			LogFile("Programm wird von Admin per Chatbefehle beendet!", "Programm")
			LogFile("", "Programm")
			Exit

		Case StringLower(StringLeft($sDataAdmin, 5)) = "kick "
			$sName = StringRight($sDataAdmin, StringLen($sDataAdmin) - 5)
			$TempSearchResult = _ArraySearch($aUsers, $sName)
			If $TempSearchResult <> -1 Then
				TCPSend($aUsers[$TempSearchResult][0], "//Kick(Admin)")
				TCPCloseSocket($aUsers[$TempSearchResult][0])
				$aUsers[$TempSearchResult][0] = ""
				$aUsers[$TempSearchResult][1] = ""
				For $i = 1 To UBound($aUsers, 1) - 1
					If $aUsers[$i][0] = "" Then ContinueLoop
					TCPSend($aUsers[$i][0], "//UserKick(" & $aUsers[$TempSearchResult][2] & ")")
				Next
				_GUICtrlListView_DeleteItem($hListView2, _GUICtrlListView_FindText($hListView2, $aUsers[$TempSearchResult][2]))
				$aUsers[$TempSearchResult][2] = ""
			Else
				MsgBox(48, "Error", "Der User konnte nicht gefunden werden!")
				Return -1
			EndIf

		Case StringLower(StringLeft($sDataAdmin, 4)) = "ban "
			$sName = StringRight($sDataAdmin, StringLen($sDataAdmin) - 4)
			$TempSearchResult = _ArraySearch($aUsers, $sName)
			If $TempSearchResult <> -1 Then

				Switch MsgBox(48 + 3, "Perm/Temp - Ban", "Soll der User permanent gebannt werden?" & @LF _
						"'JA' = Perm, 'NEIN' = Temp, 'Abbrechen' = Abbruch der Funktion")
					Case 6
						_FileWriteToLine($sBanListPath, _FileCountLines($sBanListPath) + 1, $aUsers[$TempSearchResult][3])
						_ArrayAdd($aBanList, $aUsers[$TempSearchResult][3])
					Case 7
						_ArrayAdd($aBanList, $aUsers[$TempSearchResult][3])
					Case Else
						Return -1
				EndSwitch

				TCPSend($aUsers[$TempSearchResult][0], "//Kick(AdminBan)")
				TCPCloseSocket($aUsers[$TempSearchResult][0])
				$aUsers[$TempSearchResult][0] = ""
				$aUsers[$TempSearchResult][1] = ""
				$aUsers[$TempSearchResult][3] = ""

				For $i = 1 To UBound($aUsers, 1) - 1
					If $aUsers[$i][0] = "" Then ContinueLoop
					TCPSend($aUsers[$i][0], "//UserBan(" & $aUsers[$TempSearchResult][2] & ")")
				Next
				_GUICtrlListView_DeleteItem($hListView2, _GUICtrlListView_FindText($hListView2, $aUsers[$TempSearchResult][2]))
				$aUsers[$TempSearchResult][2] = ""

			Else
				MsgBox(48, "Error", "Der User konnte nicht gefunden werden!")
				Return -1
			EndIf

		Case StringLen($sDataAdmin) > 0
			For $i = 1 To UBound($aUsers, 1) - 1
				If $aUsers[$i][0] = "" Then ContinueLoop
				TCPSend($aUsers[$i][0], "Admin|" & $sIP & "|" & $sDataAdmin)
			Next
			WriteMemo($sDataAdmin, "Admin")
			LogFile("Admin => ALL: " & $sDataAdmin, "Chat")
	EndSelect

	GUICtrlSetData($Input1, "")
	GUICtrlSetState($Input1, $GUI_FOCUS)

EndFunc   ;==>_Send

Func ToggleClientGUI()
	Switch _WinAPI_IsWindowVisible($hClientverwaltung)
		Case True
			GUISetState(@SW_HIDE, $hClientverwaltung)
			TrayItemSetState(@TRAY_ID, 68)
			ShowClients()
		Case False
			GUISetState(@SW_SHOW, $hClientverwaltung)
			TrayItemSetState(@TRAY_ID, 65)
			ShowClients()
	EndSwitch
EndFunc   ;==>ToggleClientGUI

Func HideChatGUI()
	GUISetState(@SW_HIDE, $hMainGUI)
EndFunc   ;==>HideChatGUI

Func OnAutoItStart()
	Global Const $sChatLogName = "ChatLog_" & @MDAY & "-" & @MON & "-" & @YEAR & ".log"
	Global Const $sGeneralLogName = "GeneralLog_" & @MDAY & "-" & @MON & "-" & @YEAR & ".log"
	LogFile("", "Programm")
	LogFile(" --- SERVER STARTUP --- ", "Programm")
	LogFile("", "Programm")
	LogFile("", "Chat")
	LogFile(" --- SERVER STARTUP --- ", "Chat")
	LogFile("", "Chat")
EndFunc   ;==>OnAutoItStart

Func OnAutoItExit()
	For $i = 1 To UBound($aUsers, 1) - 1
		If $aUsers[$i][0] = "" Then ContinueLoop
		TCPSend($aUsers[$i][0], "//Quit(Server-Shutdown)")
		LogFile("Server => " & $aUsers[$i][2] & "(" & $aUsers[$i][1] & "): //Quit(Server-Shutdown)", "Chat")
		TCPCloseSocket($aUsers[$i][0])
	Next

	TCPShutdown()

	LogFile("Laufzeit: " & $Time, "Programm")
	LogFile("", "Chat")
	LogFile(" --- SERVER SHUTDOWN --- ", "Chat")
	LogFile("", "Chat")
	LogFile("", "Programm")
	LogFile(" --- SERVER SHUTDOWN --- ", "Programm")
	LogFile("", "Programm")
	If $bRestart = True Then ShellExecute(@ScriptFullPath)
EndFunc   ;==>OnAutoItExit

Func _Exit()
	If TrayItemGetText(@TRAY_ID) = "Beenden" Then Exit
	If TrayItemGetText(@TRAY_ID) = "Server neu starten" Then
		LogFile("Programm wird von Admin per Traymenü neu gestartet!", "Programm")
		LogFile("", "Programm")
		$bRestart = True
		Exit
	ElseIf GUICtrlRead(@GUI_CtrlId) = "Server neu starten" Then
		LogFile("Programm wird von Admin über das Verwaltungsmenü neu gestartet!", "Programm")
		LogFile("", "Programm")
		$bRestart = True
		Exit
	EndIf
	Exit
EndFunc   ;==>_Exit

Func CopyIPClipboard()
	TrayItemSetState(@TRAY_ID, 68)
	If StringLen(ClipGet()) > 0 Then
		If MsgBox(48 + 4, "Error", "Die Zwischenablage ist NICHT leer!" & @LF _
				 & "Enthält folgendes: " & @LF & @LF & _
				 & ClipGet() & @LF & @LF & _
				"Überschreiben?") = 6 Then
			If ClipPut($sIP) = 1 Then
				LogFile("Server-IP (" & $sIP & ") erfolgreich in die Zwischenablage kopiert!", "Programm")
				TrayTipExt("Kopieren erfolgreich!")
			EndIf
		EndIf
	EndIf
EndFunc   ;==>CopyIPClipboard

Func TrayTipExt($sText)
	TrayTip($sTitle, $sText, 3)
	$tTrayTipTimer = _Timer_Init()
EndFunc   ;==>TrayTipExt

Func RefreshStuff()
	If _Timer_Diff($tTrayTipTimer) > 3000 Then TrayTip($sTitle, "", 1)

	$iLastMins = $iMins
	$iLastHour = $iHours

	_TicksToTime(_Timer_Diff($tGes), $iHours, $iMins, $iSecs)

	If $iLastMins <> $iMins Or $iLastHour <> $iHours Then
		$Time = StringFormat("%02i:%02i", $iHours, $iMins)
		TraySetToolTip("Server IP: " & $sIP & "" & @LF _
				 & "Computername: " & $sPCNetworkName & "" & @LF _
				 & "Server läuft: " & $Time)
	EndIf
EndFunc   ;==>RefreshStuff

Func WriteMemo($sData, $sNameEdit)
	GUICtrlSetData($Edit1, GUICtrlRead($Edit1) & @HOUR & ":" & @MIN & " ~ " & $sNameEdit & "  >  " & $sData & @CRLF)
EndFunc   ;==>WriteMemo
05/21/2010 21:31 mipez#4
Du hast $sGeneralLogName keine Bedeutung zugeordnet (soweit ich das rauslesen konnte).

Ein einfaches Global reicht nicht.

Z.B. Global $sGeneralLogName = GUICtrlRead(...)
05/22/2010 09:57 arisha#5
thx