Hallo Leute
Meine Funktion sucht per StringRegExp in der Log Datei meines Game Servers nach Admin Befehle die der Admin eingibt im Spiel, in diesem Beispiel ist es "akick [PLayer Name] M(Misbahavior)"
Ich habe eine Datei AdminDatabase.txt ( Namen und ID's werden über die Gui hinzugefügt )
und eine Datei JoinedPlayers.txt
Blub|0x24F0130C63AC9332
Blab|0xD5587ED243EFD307
Djallo|0xDC9EE9355C18BDCF
Bleb|0x25E614D594216068
Hansi885|0x12205521E5C94EC9
migOla|0x3EB29A4934D6F82E
Blobo|0xDC9EE9355C18BD7F
michaela23|0x1EF8E215AAB409D1
MATTFISKia|0xFBF4AF35F3DE3619
Acuntha30|0x47D43B87C1F066D2
killerol66613|0x3DC0BE2AADA335D7
Scattles293|0x28AF90E430C3B5D6
OldTown4|0xD68F4241B1E55485
Tunaa|0x3B93DBD5A37A35DB
SilverStar|0x1D7246191B0C462B
Yralist|0x93257A935AE8E1A5
conence2015|0xAE6C465EC104E55A
electrosystem|0x4A08FF9FF9334F3D
michaelPutz|0x434FD5C9FB2C8FAF
GearRead|0xE193222CE87715E8
gggdu56|0x543E62D3C6D8A4F1
Alles anzeigen
Nun soll als erstes überprüft werden ob der der den Admin Befehl eingegeben hat auch Admin ist und dann soll überprüft werden ob Name und ID (AdminDatabase.txt) des Admins auch mit Namen und ID In der JoinedPlayers.txt übereinstimmt dann wird überprüft ob der Spieler der gekickt werden soll auch in der in der JoinedPlayers.txt vorhanden ist, wenn alles übereinstimmt wird der Kick Befehl an den Server gesendet.
Nach meheren Versuchen hab ich das dann so hingekriegt, war ein richtiger Murks aber es funktioniert fürs erste.
Spoiler anzeigen
Func ReadAdminCommands()
Local $commandkickM
Local $aFileb = ""
Local $aFile = ""
_FileReadToArray(@ScriptDir & "\AdminsDatabase.txt", $aFile)
_FileReadToArray(@ScriptDir & "\JoinedPlayers.txt", $aFileb)
$commandkickM = StringRegExp($newReadLine, "message\:\s(.*)\s\(All\)\:\s(akick)\s(.*)\s(M)", 3)
If IsArray($commandkickM) Then
Local $a2D[$aFile[0]][2]
Local $a2D2[$aFileb[0]][2]
For $i = 1 To $aFile[0]
$aSplit = StringSplit($aFile[$i], "|")
$a2D[$i - 1][0] = $aSplit[1]
$a2D[$i - 1][1] = $aSplit[2]
If $a2D[$i - 1][0] == $commandkickM[0] Then
_FileWriteLog($reportsFile, "Admin " & $commandkickM[0] & " message: " & $commandkickM[1] & " " & $commandkickM[2] & " " & $commandkickM[3], -1)
For $i2 = 1 To $aFileb[0]
$aSplit = StringSplit($aFileb[$i2], "|")
$a2D2[$i2 - 1][0] = $aSplit[1]
$a2D2[$i2 - 1][1] = $aSplit[2]
If $a2D2[$i2 - 1][0] & $a2D2[$i2 - 1][1] == $a2D[$i - 1][0] & $a2D[$i - 1][1] Then
For $i3 = 1 To $aFileb[0]
$aSplit = StringSplit($aFileb[$i3], "|")
$a2D2[$i3 - 1][0] = $aSplit[1]
$a2D2[$i3 - 1][1] = $aSplit[2]
If $a2D2[$i3 - 1][0] == $commandkickM[2] Then
StdinWrite($fc2, "tell " & $commandkickM[2] & " You have been Kicked " & $commandkickM[2] & @CRLF)
Sleep(2000)
StdinWrite($fc2, "net_kickclient " & $commandkickM[2] & @CRLF)
StdinWrite($fc2, "say " & $commandkickM[2] & " was kicked by Admin." & @CRLF)
StdinWrite($fc2, "say " & "Reason: Misbehavior." & @CRLF)
_FileWriteLog($reportsFile, "Admin " & $commandkickM[0] & " kicked " & $commandkickM[2] & " for Misbehavior.", -1)
_FileWriteLog($bannedPlayersFile, "Admin " & $commandkickM[0] & " kicked " & $commandkickM[2] & " for Misbehavior.", -1)
;~ Else
;~ StdinWrite($fc2, "tell " & $commandkickM[0] & " Player Not Found" & @CRLF)
;~ _FileWriteLog($reportsFile, "Return message to " & $commandkickM[0] & ": Player Not Found", -1)
EndIf
Next
EndIf
Next
EndIf
Next
EndIf
EndFunc ;==>ReadAdminCommands
Bin ich auf dem richtigen weg oder ist alles nur ein Murks?