Hej jag har ett litet problem först och främst i och med att jag inte kan koda vbs scirpt samt att jag inte får bort bottar i vår statistik som vi har kopplat till vår condition-zero server.
Vi har ett statscirpt som läser av ett antal loggfiler dessa loggfiler ser ut ungefär så här..
L 07/22/2005 - 08:26:34: "paikebot - Kevin<11><BOT><>" joined team "CT"
L 07/22/2005 - 08:26:34: "paikebot - Kevin<11><BOT><>" entered the game
L 07/22/2005 - 08:26:34: "paikebot - Doug<12><BOT><>" joined team "TERRORIST"
L 07/22/2005 - 08:26:34: "paikebot - Doug<12><BOT><>" entered the game
L 07/22/2005 - 08:26:35: "paikebot - Yahn<13><BOT><>" joined team "CT"
L 07/22/2005 - 08:26:35: "paikebot - Yahn<13><BOT><>" entered the game
L 07/22/2005 - 08:26:35: "paikebot - Tim<14><BOT><>" joined team "TERRORIST"
L 07/22/2005 - 08:26:35: "paikebot - Tim<14><BOT><>" entered the game
L 07/22/2005 - 08:26:37: "paikebot - Doug<12><BOT><TERRORIST>" triggered "Spawned_With_The_Bomb"
L 07/22/2005 - 08:26:51: "paikebot - Tim<14><BOT><TERRORIST>" triggered "Spawned_With_The_Bomb"
L 07/22/2005 - 08:27:33: "paikebot - Yahn<13><BOT><CT>" killed "paikebot - Tim<14><BOT><TERRORIST>" with "usp"
L 07/22/2005 - 08:27:33: "paikebot - Tim<14><BOT><TERRORIST>" triggered "Dropped_The_Bomb"
L 07/22/2005 - 08:27:56: "paikebot - Doug<12><BOT><TERRORIST>" triggered "Got_The_Bomb"
L 07/22/2005 - 08:28:07: "paikebot - Yahn<13><BOT><CT>" killed "[NoTriX]BabeKallio<7><STEAM_X:X:XXXXXX><TERRORIST>" with "usp"
L 07/22/2005 - 08:28:15: "paikebot - Doug<12><BOT><TERRORIST>" killed "paikebot - Yahn<13><BOT><CT>" with "glock18"
L 07/22/2005 - 08:28:58: "paikebot - Kevin<11><BOT><CT>" killed "paikebot - Doug<12><BOT><TERRORIST>" with "usp"
L 07/22/2005 - 08:29:07: "paikebot - Tim<14><BOT><TERRORIST>" killed "paikebot - Kevin<11><BOT><CT>" with "galil"
L 07/22/2005 - 08:29:12: "paikebot - Doug<12><BOT><TERRORIST>" triggered "Spawned_With_The_Bomb"
L 07/22/2005 - 08:29:27: "paikebot - Yahn<13><BOT><CT>" killed "paikebot - Doug<12><BOT><TERRORIST>" with "tmp"
L 07/22/2005 - 08:29:27: "paikebot - Doug<12><BOT><TERRORIST>" triggered "Dropped_The_Bomb"
L 07/22/2005 - 08:29:38: "[NoTriX]BabeKallio<7><STEAM_0:X:XXXX><TERRORIST>" killed "paikebot - Yahn<13><BOT><CT>" with "mp5navy"
L 07/22/2005 - 08:29:47: "[NoTriX]BabeKallio<7><STEAM_X:X:XXXXXX><TERRORIST>" killed "paikebot - Kevin<11><BOT><CT>" with "mp5navy"
L 07/22/2005 - 08:29:52: "paikebot - Tim<14><BOT><TERRORIST>" triggered "Spawned_With_The_Bomb"
L 07/22/2005 - 08:30:23: "paikebot - Kevin<11><BOT><CT>" killed "[NoTriX]BabeKallio<7><STEAM_X:X:XXXXXX><TERRORIST>" with "famas"
L 07/22/2005 - 08:30:33: "paikebot - Kevin<11><BOT><CT>" killed "paikebot - Doug<12><BOT><TERRORIST>" with "famas"
Vårt statskript genererar stats utifrån dessa filer... problemet är att statskriptet genererar individuell statistik utifrån STEAM_ID som spelarna har och en BOT som eventellt finns connectad mot servern får aldrig något korrekt steamid (det går inte att ta bort en spelare utan steamid från statistiken då alla VANLIGA spelare ALLTID får ett steamid).
Det jag skulle vilja få lite hjälp med är ett vbs-script som byter ut alla <BOT> mot ett påhittat men rätt formaterat steamid och på så sätt kan jag skriva in det påhittade steamidet i en denied fil som gör att bottarna (det påhittade steamid:et) INTE kommer med i statsen.
Idag i loggarna:
L 07/22/2005 - 08:30:33: "paikebot - Kevin<11><BOT><CT>" killed "paikebot - Doug<12><BOT><TERRORIST>" with "famas"
Efter körning av scirptet:
L 07/22/2005 - 08:30:33: "paikebot - Kevin<11><STEAM_0:0:123><CT>" killed "paikebot - Doug<12><STEAM_0:0:123><TERRORIST>" with "famas"
Det påhittade steamid:et som ska bytas ut där det står BOT i dom vanliga loggfilerna.
STEAM_0:0:123
Scriptet hade jag tänkt att köra med windows schemaläggaren en gång / dygn.. loggfilerna finns placerade här..
c:/spel/hlserver/czero/logs
*Ca 130mb textfiler från ca 3kb till ca 215 kb
Genom att det är så pass många filer så kanske man skulle kunna göra att den BARA ändrar i "gårdagens filer" om det finns några sådana.. då blir det ju alla filer ändå genom att jag kör det en gång / dygn?! (annars är väll risken ganska stor för en timeout i scirptet när det blir mcyket filer samt att det lär och ta grymt lång tid att köra det)*
Detta scirpt skulle kunna hjälpa alla som kör PsychoStats 1.9.1 connectat mot en condition-zero server och vill ha bort bottar från statistiken någon som inte går idag genom strulet med steamid.
Jag har ingen aning om huruvida det är det bästa sättet, eller hur det beter sig i stora datamängder, men...
set oF = CreateObject("Scripting.FileSystemObject").OpenTextFile("foo.log",1)
sTmp = Replace(oF.ReadAll(), "<BOT>", "<STEAM_0:0:123>")
oF.Close
set oF = Nothing
set oF = CreateObject("Scripting.FileSystemObject").OpenTextFile("foo.log",2)
oF.Write(sTmp)
oF.Close
set oF = Nothing
Genom att det är så pass många filer så kanske man skulle kunna göra att den BARA ändrar i "gårdagens filer" om det finns några sådana.. då blir det ju alla filer ändå genom att jag kör det en gång / dygn?! (annars är väll risken ganska stor för en timeout i scirptet när det blir mcyket filer samt att det lär och ta grymt lång tid att köra det)
En dags loggfiler kanske bara är 3-4 mb om inte mindre...
Scriptet går igenom alla filer i loggfilsmappen. Om filen skapades igår (dvs dagen innan scriptfilen körs), byts alla förekomster av <BOT> ut mot lämpligt steam-id.
set oFSO = CreateObject("Scripting.Filesystemobject")
set oFolder = oFSO.GetFolder("c:\spel\hlserver\czero\logs\")
for each oFile in oFolder.Files
if Datediff("d", oFile.DateLastModified, date()) = 1 then replaceFileStuff oFile.Name
next
set oFolder = Nothing
set oFSO = Nothing
sub replaceFileStuff (sFileName)
set oF = CreateObject("Scripting.FileSystemObject").OpenTextFile("c:\spel\hlserver\czero\logs\" & sFileName, 1)
sTmp = Replace(oF.ReadAll(), "<BOT>", "<STEAM_0:0:123>")
oF.Close
set oF = Nothing
set oF = CreateObject("Scripting.FileSystemObject").OpenTextFile("c:\spel\hlserver\czero\logs\" & sFileName, 2)
oF.Write(sTmp)
oF.Close
set oF = Nothing
end sub
Dock hade den en inbyggd funktion... den tar bort alla gårdagens filer... hinner inte se om något ändras i dem dom bara försvinner...
Det är lugnt självklart tog jag en backup av loggmappen innan jag började mecka... testade detta script
bot_steamid.vbs
set oFSO = CreateObject("Scripting.Filesystemobject")
set oFolder = oFSO.GetFolder("c:\logs\")
for each oFile in oFolder.Files
if Datediff("d", oFile.DateLastModified, date()) = 1 then replaceFileStuff oFile.Name
next
set oFolder = Nothing
set oFSO = Nothing
sub replaceFileStuff (sFileName)
set oF = CreateObject("Scripting.FileSystemObject").OpenTextFile("c:\logs\" & sFileName, 1)
sTmp = Replace(oF.ReadAll(), "<BOT>", "<STEAM_0:0:123>")
oF.Close
set oF = Nothing
set oF = CreateObject("Scripting.FileSystemObject").OpenTextFile("c:\logs\" & sFileName, 2)
oF.Write(sTmp)
oF.Close
set oF = Nothing
end sub
Jag vet inte om det har någon betydelse men filerna heter typ
Se bara till att ändra mappnamnet på översta raden.
sFolder = "d:\logs\"
set oFSO = CreateObject("Scripting.Filesystemobject")
set oFolder = oFSO.GetFolder(sFolder)
for each oFile in oFolder.Files
if Datediff("d", oFile.DateCreated, date()) = 1 then replaceFileStuff oFile.Name
next
set oFolder = Nothing
set oFSO = Nothing
sub replaceFileStuff (sFileName)
bRewrite = false
set oF = CreateObject("Scripting.FileSystemObject").OpenTextFile(sFolder & sFileName, 1)
sTmp = oF.ReadAll()
if instr(sTmp, "<BOT>") > 0 then
sTmp = Replace(sTmp, "<BOT>", "<STEAM_0:0:123>")
bRewrite = true
end if
oF.Close
set oF = Nothing
if bRewrite then
set oF = CreateObject("Scripting.FileSystemObject").OpenTextFile(sFolder & sFileName, 2)
oF.Write(sTmp)
oF.Close
set oF = Nothing
end if
end sub
Script: c:/bot_steamid.vbs
Line 15
Hcar 2
Error Input past end of file
Code 800A003E
Source Microsfot VBScript runtime error
Om jag fattar detta rätt så får jag detta pga att det inte finns något mer att ändra... kan man på något sätt få bort meddelandet, så att jag kan använda scriptet i schemaläggaren.