Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Array.au3>
- #include <Date.au3>
- #include <GUIConstantsEx.au3>
- #include <GuiListView.au3>
- #include <SQLite.au3>
- #include <SQLite.dll.au3>
- #include <WindowsConstants.au3>
- #include <WinHTTP.au3>
- HotKeySet("!{Q}", "_HKS") ; Alt + Shift + Q ; DB-Query
- HotKeySet("!{C}", "_HKS") ; Alt + Shift + C ; Call Function
- HotKeySet("!{E}", "_HKS") ; Alt + Shift + E ; DB-Exec
- Opt("MustDeclareVars", 1)
- ; ========= Globale Einstellungen ==========
- Global $HTTP_USER = "AutoitBot"
- Global $HTTP_PASS = "autoit123"
- Global $HTTP_Agent = _WinHttpOpen("Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
- Global $HTTP_Host = "u1.imperion.de"
- Global $HTTP_Connect = _WinHttpConnect($HTTP_Agent, $HTTP_Host)
- Global $sRead = _Game_Login()
- Global $sCurP = StringRegExp($sRead, "(?<=/buildings/)\d+", 3)
- Global $aStorage = StringRegExp($sRead, "(?i)StorageR[1-3].+\s+(\d+)\s+</div", 3)
- $sCurP = $sCurP[0]
- _DB_Start()
- Global $iSlots
- ;~ Exit ClipPut($sRead) <> 1
- ; ========= Hauptfunktion ==========
- _Main()
- _WinHttpCloseHandle($HTTP_Connect)
- _WinHttpCloseHandle($HTTP_Agent)
- Func _Main()
- Local $aTmp
- _DB_Exec("UPDATE Farmlist SET atk = 0;")
- $iSlots = _Game_Fleet_GetFleetInfo()
- Send("!{Q}")
- Local $iWidth = 800, $iHeight = 400, $tiMov = TimerInit(), $acTab[5], $tiQueue = $tiMov, $tiReports = $tiMov
- Local $nMsg, $hGUI, $cTabParent, $cQueue, $cBuild, $cListview, $hListView
- ; ========= GUI ==========
- $hGUI = GUICreate("Imperion Bot [SEuBo & Acanis]", $iWidth, $iHeight)
- $cTabParent = GUICtrlCreateTab(20, 20, 760, 360)
- $acTab[0] = GUICtrlCreateTabItem("Gebäude")
- GUISwitch($acTab[0])
- $cQueue = GUICtrlCreateLabel("", 30, 50, 360, 60, $WS_BORDER)
- GUICtrlSetState(-1, $GUI_ONTOP)
- $cBuild = GUICtrlCreateButton("Bauen/Ausbauen", 600, 15, 160, 20)
- $cListview = GUICtrlCreateListView("ID|Gebäude|Stufe", 400, 40, 379, 340)
- $hListView = GUICtrlGetHandle($cListview)
- _GUI_UpdateListView($sRead, $cListview)
- $acTab[1] = GUICtrlCreateTabItem("Farmen")
- GUISwitch($acTab[1])
- _GUICtrlListView_Create($acTab[1], "Test", 100, 100, 200, 200)
- GUISetState()
- ; ========= Hier kann man funktionen testen ==========
- ;~ _Game_Farm_CreateFarmList()
- ;~ _Game_Farm_AddFarm($sCurP,95603801, "5,20")
- ;~ _Game_Farm()
- ;~ _Game_Fleet_CheckForExpiredMovements()
- ;~ _Game_UpdateReports()
- ;~ Exit
- While 1
- $nMsg = GUIGetMsg()
- ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $nMsg = ' & $nMsg & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
- Switch $nMsg
- Case 0
- If TimerDiff($tiQueue) > 1000 Then
- _GUI_UpdateQueue($sRead, $cQueue) ; Warteschlange im GUI jede sekunde updaten
- $tiQueue = TimerInit()
- EndIf
- If TimerDiff($tiMov) > 10000 Then
- _Game_Fleet_CheckForExpiredMovements()
- _Game_Farm()
- $tiMov = TimerInit()
- EndIf
- If TimerDiff($tiReports) > 60000 * 5 Then
- _Game_UpdateReports()
- $tiReports = TimerInit()
- EndIf
- Case -3
- Exit
- Case $cBuild
- ; ========= Gebäude bauen. Wenn schon Gebäude an der aktuellen Position vorhanden ist, wird es ausgebaut. Ansonsten kann man später auswählen WELCHES Gebäude gebaut werden soll ==========
- $sRead = _WinHTTP_Visit("/planet/buildings/" & $sCurP, $HTTP_Connect, $HTTP_Host)
- Local $iSelID = _GUICtrlListView_GetItemText($hListView, _GUICtrlListView_GetSelectionMark($hListView), 0)
- If Not StringRegExp($sRead, "(?i)/show/" & $iSelID) Then
- $sRead = _Game_Build($iSelID)
- Else
- $sRead = _Game_Upgrade($iSelID)
- EndIf
- _GUI_UpdateQueue($sRead, $cQueue, 1) ; Warteschlange im GUI updaten
- EndSwitch
- WEnd
- EndFunc ;==>_Main
- Func _WinHTTP_Visit($sURL, $sConnect = "", $sHost = "", $iSLN = @ScriptLineNumber)
- ConsoleWrite("========> HTML GET @ Line " & $iSLN & " - " & _Now() & " =================== << GET >> " & $sURL & @CRLF)
- ; ========= GET Funktion ==========
- If $sConnect = "" Then $sConnect = $HTTP_Connect
- If $sHost = "" Then $sHost = $HTTP_Host
- Local $HTML, $HTTP_Request = _WinHttpOpenRequest($sConnect, "GET", $sURL, "HTTP/1.1", $sHost)
- _WinHttpSendRequest($HTTP_Request)
- _WinHttpReceiveResponse($HTTP_Request)
- Do
- $HTML &= _WinHttpReadData($HTTP_Request)
- Until @error
- Return $HTML
- EndFunc ;==>_WinHTTP_Visit
- Func _WinHTTP_Post($sURL, $sPost, $sContent = "", $sHost = "")
- ; ========= Post Funktion ==========
- If $sHost = "" Then $sHost = $HTTP_Host
- If $sContent = "" Then $sContent = "Content-Type: application/x-www-form-urlencoded" & @CRLF
- Local $HTML, $HTTP_Request = _WinHttpOpenRequest($HTTP_Connect, "POST", $sURL, "HTTP/1.1", $HTTP_Host)
- _WinHttpSendRequest($HTTP_Request, $sContent, $sPost)
- _WinHttpReceiveResponse($HTTP_Request)
- Do
- $HTML &= _WinHttpReadData($HTTP_Request)
- Until @error
- _WinHttpCloseHandle($HTTP_Request)
- ConsoleWrite("========> HTML POST @ " & _Now() & "=================== << POST" & @CRLF)
- Return $HTML
- EndFunc ;==>_WinHTTP_Post
- Func _Game_Login()
- ;Hauptseite
- Local $HTML, $HTTP_Request = _WinHttpOpenRequest($HTTP_Connect, "GET", "/", "HTTP/1.1", $HTTP_Host)
- _WinHttpSendRequest($HTTP_Request)
- _WinHttpReceiveResponse($HTTP_Request)
- Do
- $HTML &= _WinHttpReadData($HTTP_Request)
- Until @error
- _WinHttpCloseHandle($HTTP_Request)
- ;Login
- Local $POST = "player%5Bname%5D=" & $HTTP_USER & "&player%5Bpw%5D=" & $HTTP_PASS
- Return _WinHTTP_Post("/login/login", $POST)
- EndFunc ;==>_Game_Login
- Func _Game_UpdateReports()
- ; Planet = Planet ID |cap = Gesamtkapazität aller schiffe|attacker = Angreifer Schiffe (s._Game_Attack)|defender = Verteidiger Schiffe|r1 = Metall|r2 = Kristall|r3 = Das andere Zeug|date = Datum & Uhrzeit|planetdef = Planetare Verteidigungsmaßnahmen|schutt = schuttfeld Infos
- ;~ _DB_Exec("DROP TABLE Reports")
- ;~ _DB_Exec("CREATE TABLE Reports (id INTEGER PRIMARY KEY, planet bigint, cap bigint, attacker text, defender text, r1 bigint, r2 bigint, r3 bigint, date text, planetdef text, schutt text);")
- Local $sReportList, $aReports, $i, $j
- Do
- $sReportList = _WinHTTP_Visit("/report/index/id/all/page/" & $i)
- $aReports = StringRegExp($sReportList, '/report/show[^"]+', 3)
- For $j = 0 To UBound($aReports) - 1
- _Game_ReportToDB($aReports[$j])
- If @error Then ExitLoop 2
- Next
- $i += 1
- Until Not StringInStr($sReportList, "/report/index/id/all/page/" & $i)
- EndFunc ;==>_Game_UpdateReports
- Func _Game_ReportToDB($sURL)
- ; ========= Trägt einen KB in die Datenbank ein. ==========
- Local $aDate, $aRes, $aSchuttfeld, $aTruppen, $aPlanetVert, $aPlanet, $iRet
- Local $sReport = _WinHTTP_Visit($sURL)
- Local $iReportID = StringRegExpReplace($sURL, ".+/", "")
- $aDate = StringRegExp($sReport, "(?(?=\d\d\.\d\d\.\d\d)\d?\d\.\d?\d\.\d\d \d\d?:\d\d?:\d\d?|\d\d[\/]\d\d[\/]\d\d \d\d:\d\d:\d\d)", 3)
- $aRes = StringRegExp($sReport, "(?i)<p>[^\d\n]+(\d+)[^\d\n]+(\d+)[^\d\n]+(\d+)[^<\n]+</p>", 3)
- $aSchuttfeld = StringRegExp($sReport, "<br />\s+<p>([^<]+)</p>\s+<p>.+\d+.+\d+.+\d.+</p>", 3)
- $aTruppen = StringRegExp($sReport, '(?<=(?<=colorGrey|fontBold) ">)\d+', 3)
- $aPlanetVert = StringRegExp($sReport, '(?<=(?<=colorGrey|fontBold)">)\d+\b(?!</div>)', 3)
- $aPlanet = StringRegExp($sReport, 'Angriff von.+auf[^"]+".+/(\d+)"', 3)
- If Not IsArray($aSchuttfeld) Then Local $aSchuttfeld[1] = ["''"]
- If Not IsArray($aPlanetVert) Then Local $aPlanetVert[1] = ["''"]
- If Not IsArray($aPlanet) Then Local $aPlanet[1] = ["''"]
- If Not IsArray($aRes) Then Local $aRes[3] = ["''", "''", "''"]
- $iRet = _DB_Exec("INSERT INTO Reports (id, planet, attacker, defender, r1, r2, r3, date, planetdef, schutt)" & _
- " VALUES (" & $iReportID & ", " & $aPlanet[0] & ", '" & _ArrayToString($aTruppen, "|", 0, 11) & "', '" & _ArrayToString($aTruppen, "|", 12, 23) & "', " & $aRes[0] & ", " & $aRes[1] & ", " & $aRes[2] & ", '" & $aDate[0] & "', '" & _ArrayToString($aPlanetVert) & "', '" & $aSchuttfeld[0] & "');")
- Return SetError(@error, @extended, $iRet)
- EndFunc ;==>_Game_ReportToDB
- Func _Game_Farm()
- ; ========= Na rate mal ==========
- ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ; MUSS GEÄNDERT WERDEN!
- ; 1. intelligentes Farmsystem ( ;-) )
- ; 2. Angriffe nach Datum sortieren.
- ; 3. Bewertungsalgorythmus (Grundwert = 1 * [Durchschn. Rohstoffausbeute in %] ist der Grundwert.
- ; Für den genauen Algoryhtmus muss ich mir noch was überlegen.
- ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- If $iSlots = 0 Then Return (ConsoleWrite("!>" & @TAB & "Keine freien Slots mehr. Farmen beenden." & @CRLF) <> 0)
- Local $iErr, $aSlots, $iUbound, $t = TimerInit(), $aTmp, $aFarmList = _DB_Query("SELECT target, ships FROM Farmlist WHERE atk = 0 ORDER BY lastatk")
- If $aFarmList[0][0] = 0 Then Return (ConsoleWrite("!>" & @TAB & "Keine freien Farms mehr. Farmen beenden. Mehr Farmen hinzufügen wird empfohlen" & @CRLF) <> 0)
- _WinHTTP_Visit("/planet/buildings/" & $sCurP)
- Local $sFleetBase = _WinHTTP_Visit("/fleetBase/show/1")
- For $i = 1 To UBound($aFarmList) - 1
- _Game_Attack($aFarmList[$i][0], $aFarmList[$i][1])
- $iErr = @error
- ;~ Exit
- If Not $iErr Then $iSlots -= 1
- If $iSlots = 0 Then ExitLoop (ConsoleWrite("!>" & @TAB & "Keine freien Slots mehr. Farmen beenden." & @CRLF) <> 0)
- Next
- EndFunc ;==>_Game_Farm
- Func _Game_Attack($iPlanet, $sShips)
- ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ; MUSS GEÄNDERT WERDEN!
- ; 1. Center bleibt das eigene System.
- ; 2. Vorher sollte noch auf die normale map zugegriffen werden.
- ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ;~ Local $aAlready = _DB_Query("SELECT * FROM Movements where planet=" & $iPlanet)
- ;~ If UBound($aAlready) > 1 Then Return ConsoleWrite("Schon Angriff auf Planet vorhanden." & @CRLF)
- ; ========= Greift einen Planeten anhand seiner ID und seiner Sonnensystem ID an. $sShips ist ein String, der angibt, welche Schfife geschickt werden ==========
- ; ========= Schifftyp 5 ist der normale Jäger. um mit 10 normalen jägern anzugreifen, übergeben wird "5,10" Meehrere Paare können mit ; getrennt werden==========
- Local $sRoute, $aMorePostData, $sShipsFinal, $sPost, $sAttacked, $aRouteInfo
- Local $iSonnenSystem = StringTrimRight($iPlanet, 2), $s12 = "ships\[\d+\]=(\d+)&?"
- $s12 = $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12
- Local $sShipString = "ships[1]=0&ships[2]=0&ships[3]=0&ships[4]=0&ships[5]=0&ships[6]=0&ships[7]=0&ships[8]=0&ships[9]=0&ships[10]=0&ships[11]=0&ships[12]=0" ;
- Local $sPlanet = _WinHTTP_Visit("/map/index/system/" & $iSonnenSystem & "/#/system/" & $iSonnenSystem & "/planet/" & $iPlanet)
- Local $sFleetBase = _WinHTTP_Visit("/fleetBase/mission/1/planetId/" & $iPlanet)
- Local $aShips = StringRegExp($sShips, "(\d+),(\d+)", 3)
- For $i = 0 To UBound($aShips) - 2 Step 2
- $sShipString = StringRegExpReplace($sShipString, "(?<=ships\[" & $aShips[$i] & "\]=)\d+", $aShips[$i + 1])
- Next
- $aMorePostData = StringRegExp($sFleetBase, 'name="f".+="([^"]+)|name="tan".+="([^"]+)', 3)
- $sShipsFinal = StringRegExpReplace(StringRegExpReplace(StringRegExpReplace($sShipString, "ships\[\d+\]=0&?", ""), "&$", ""), "ships(?=\[)", "ship")
- $sRoute = _WinHTTP_Post("/fleetBase/route/1", _PostEncode("planetId=" & $iPlanet & "&ajaxRequest=1&" & $sShipString))
- $aRouteInfo = StringRegExp($sRoute, $iPlanet & "[^}]+(\d\d:\d\d:\d\d)[^}:]+:(\d+)[^}:]+:(\d+)", 3)
- $sShipString = StringRegExpReplace($sShipString, $s12, "${1}|${5}|${10}|${6}|${11}|${7}|${9}|${8}|${2}|${3}|${4}|${12}")
- ;~ Exit ClipPut($sRoute)
- ConsoleWrite("!>" & @TAB & "Attacking " & $iPlanet & @CRLF)
- $sPost = "f=" & $aMorePostData[0] & "&tan=" & $aMorePostData[2] & "&targetType=p&" & $sShipsFinal & "&mission=301&planet=" & $iPlanet & "&tank_text="
- $sAttacked = _WinHTTP_Post("/fleetBase/send/1", _PostEncode($sPost))
- Local $sEventsinDB, $aEventsInDB = _DB_Query("SELECT event FROM Movements")
- For $i = 1 To UBound($aEventsInDB) - 1
- $sEventsinDB &= $aEventsInDB[$i][0] & "|"
- Next
- $sEventsinDB = StringTrimRight($sEventsinDB, 1)
- Local $sAttackAttacks = StringRegExpReplace($sAttacked, '[\w\W]+Flotten unterwegs([\w\W]+?)<div class="spacer10" style="clear:both;"></div>\s+</div>[\w\W]+', "$1")
- Local $aEventdata = StringRegExp(StringRegExpReplace($sAttackAttacks, "(?:" & $sEventsinDB & ")", ""), "(?<=>)\d+(?=</span>).+?recall/(\d+)", 3), $iMax
- ClipPut($sAttackAttacks)
- If Not IsArray($aEventdata) Then
- ConsoleWrite("!> => !!!! no event data !!!!" & @CRLF)
- Select
- Case StringInStr($sAttacked, "Das Ziel ist noch im Noob-Schutz.")
- ConsoleWrite("!> => !!!! Noob Schutz! Lösche Farm aus Liste !!!!" & @CRLF)
- _DB_Exec("DELETE FROM Farmlist WHERE target=" & $iPlanet & ";")
- Case StringInStr($sAttacked, "Auf dem Ziel gibt es nichts anzugreifen.")
- ConsoleWrite("!> => !!!! Ungültige Farm. Gasplanet? Lösche Farm! !!!!" & @CRLF)
- _DB_Exec("DELETE FROM Farmlist WHERE target=" & $iPlanet & ";")
- Case StringInStr($sAttacked,"Kein Flottenslot mehr frei.")
- ConsoleWrite("!> => !!!! Keine Flottenslots mehr frei! !!!!" & @CRLF)
- $iSlots = 0
- Case Else
- ConsoleWrite("!> => !!!! Unbekannter Fehler! Beenden! !!!!" & @CRLF)
- Exit ClipPut(StringRegExpReplace($sAttackAttacks, "(?:" & $sEventsinDB & ")", ""))
- EndSelect
- Return SetError(1, 0, 0)
- EndIf
- ;~ _ArrayDisplay($aEventdata)
- ;~ Exit
- ;~ ClipPut(StringRegExpReplace($sAttackAttacks, _ArrayToString($aEventsInDB, "|", 1),""))
- Local $iNow = _NowCalc()
- ;~ ClipPut($sAttacked)
- _DB_Exec("INSERT INTO Movements (event, planet, planetfrom, ships, movtype, date, diff, now) " & _
- "VALUES (" & _ArrayMax($aEventdata) & ", " & $iPlanet & ", '" & $sCurP & "', '" & $sShipString & "', " & '"attack"' & ", '" & _DateAdd("s", $aRouteInfo[1], $iNow) & "', " & $aRouteInfo[1] & ", '" & $iNow & "');")
- _DB_Exec("UPDATE Farmlist SET atk = " & _ArrayMax($aEventdata) & ", lastatk = '" & $iNow & "' WHERE target = " & $iPlanet & " AND planetfrom = " & $sCurP)
- ;~ MsgBox(0, "", "")
- Return SetError(0, 0, 1)
- EndFunc ;==>_Game_Attack
- Func _Game_GetMap($iSonnenSystem = -1)
- ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ; MUSS GEÄNDERT WERDEN!
- ; 1. RegExp muss geändert werden. Der String ist die härte....
- ; 2. hoffen wir auf eine map.sql...
- ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- Local $iID = "\d+", $sMap, $aSonnenSysteme
- If $iSonnenSystem <> -1 Then $iID = $iSonnenSystem
- $sMap = _WinHTTP_Visit("/map/index")
- $sMap = StringRegExpReplace($sMap, '{"reports":{(?:"\d+":{[^}]+},?)+}', "") ; Kampfberichte aus map filtern.
- $aSonnenSysteme = StringRegExp($sMap, '"' & $iID & '":{(?:"1[24]".+?}],)?"1":.+?}}}', 3)
- ClipPut($sMap)
- ;~ ClipPut($aSonnenSysteme[0])
- _ArrayDisplay($aSonnenSysteme)
- EndFunc ;==>_Game_GetMap
- Func _Farm_GetShipStringFromDBEntry($sString)
- Return StringRegExpReplace($sString, "^(\d+)\|(\d+)\|(\d+)\|(\d+)\|(\d+)\|(\d+)\|(\d+)\|(\d+)\|(\d+)\|(\d+)\|(\d+)\|(\d+)$", _
- "ships[1]=$1&$ships[2]=$9&ships[3]=$10&ships[4]=$11&ships[5]=$2&ships[6]=$4&ships[7]=$6&ships[8]=$8&ships[9]=$7&ships[10]=$3&ships[11]=$5&ships[12]=$12")
- EndFunc ;==>_Farm_GetShipStringFromDBEntry
- Func _Game_Upgrade($iID)
- ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ; MUSS GEÄNDERT WERDEN!
- ; 1. Rohstoffe vorher auslesen.
- ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- Local $sOverView, $aHref, $sBuilding, $aUpgrade
- ;~ MsgBox(0, "", "upgrade")
- $sOverView = _WinHTTP_Visit("/planet/buildings/" & $sCurP)
- $aHref = StringRegExp($sOverView, 'href="([^"]+)" id="area_' & $iID, 3)
- If @error Then Return
- $sBuilding = _WinHTTP_Visit($aHref[0])
- ClipPut($sOverView)
- $aUpgrade = StringRegExp($sBuilding, '/building/build/' & $iID & '/[^"]+', 3)
- If @error Then
- MsgBox(0, "", "@error " & @error & @CRLF & "Line: " & @ScriptLineNumber)
- MsgBox(0, "", "RegExp Fehler. Wahrscheinlich zu wenig Rohstoffe!")
- Return $sOverView
- EndIf
- Return _WinHTTP_Visit($aUpgrade[0])
- EndFunc ;==>_Game_Upgrade
- Func _Game_Build($iID)
- Local $sOverView, $aHref, $sBuilding, $aPossibleBuildings
- ;~ MsgBox(0,"","Build")
- $sOverView = _WinHTTP_Visit("/planet/buildings/" & $sCurP)
- $aHref = StringRegExp($sOverView, 'href="([^"]+)" id="area_' & $iID, 3)
- If @error Then Return
- $sBuilding = _WinHTTP_Visit($aHref[0])
- MsgBox(ClipPut($sBuilding) <> 0, "", $sBuilding, 3)
- $aPossibleBuildings = StringRegExp($sBuilding, 'floatLeft">([^<]+)[\w\W]+?((?<=<a href=")/building[^"]+|building_new_error)', 3)
- _ArrayDisplay($aPossibleBuildings, "Possible")
- ;~ $aUpgrade = StringRegExp($sBuilding, '/building/build/' & $iID & '/[^"]+', 3)
- EndFunc ;==>_Game_Build
- Func _Game_Farm_CreateFarmList()
- _DB_Exec("DROP TABLE Farmlist")
- _DB_Exec("CREATE TABLE Farmlist (id INTEGER PRIMARY KEY, planetfrom INTEGER, target INTEGER, ships TEXT, atk SMALLINT, lastatk TEXT)")
- _Game_Farm_AddFarm($sCurP, 95684201, "5,20")
- _Game_Farm_AddFarm($sCurP, 95684205, "5,20")
- _Game_Farm_AddFarm($sCurP, 95684206, "5,20")
- _Game_Farm_AddFarm($sCurP, 95684207, "5,20")
- _Game_Farm_AddFarm($sCurP, 95684208, "5,20")
- _Game_Farm_AddFarm($sCurP, 95764601, "5,20")
- _Game_Farm_AddFarm($sCurP, 95764602, "5,20")
- _Game_Farm_AddFarm($sCurP, 95764603, "5,20")
- _Game_Farm_AddFarm($sCurP, 95764604, "5,20")
- _Game_Farm_AddFarm($sCurP, 95764605, "5,20")
- _Game_Farm_AddFarm($sCurP, 95764606, "5,20")
- _Game_Farm_AddFarm($sCurP, 95764607, "5,20")
- _Game_Farm_AddFarm($sCurP, 95764608, "5,20")
- EndFunc ;==>_Game_Farm_CreateFarmList
- Func _Game_Farm_AddFarm($sPlanetFrom, $iPlanetID, $sShips)
- _DB_Exec("INSERT INTO Farmlist (planetfrom, target, ships, atk) VALUES (" & $sPlanetFrom & ", " & $iPlanetID & ", '" & $sShips & "', 0);")
- EndFunc ;==>_Game_Farm_AddFarm
- Func _Game_Fleet_CheckForExpiredMovements()
- Local $aExpiredAttacks, $aExpiredReturns, $iNow = _NowCalc()
- ; ========= Angriffe, die angekommen sind Auslesen, und als Return neu eintragen. ==========
- $aExpiredAttacks = _DB_Query("SELECT * FROM Movements WHERE date<'" & $iNow & "' AND movtype='attack'")
- _DB_Exec("DELETE FROM Movements WHERE date<'" & $iNow & "' AND movtype='attack'")
- ;~ _ArrayDisplay($aExpiredAttacks, "Expired Attacks")
- For $i = 1 To $aExpiredAttacks[0][0]
- _DB_Exec("INSERT INTO Movements (event, planet, planetfrom, ships, movtype, date, diff, now) " & _
- "VALUES (" & $aExpiredAttacks[$i][0] & ", '" & $aExpiredAttacks[$i][1] & "', '" & $aExpiredAttacks[$i][2] & "', '" & $aExpiredAttacks[$i][3] & "', " & '"return"' & ", '" & _DateAdd("s", $aExpiredAttacks[$i][6], $aExpiredAttacks[$i][7]) & "', " & $aExpiredAttacks[$i][6] & ", '" & $aExpiredAttacks[$i][7] & "');")
- Next
- ; ========= Returns die angekommen sind aus der DB löschen. ==========
- $aExpiredReturns = _DB_Query("SELECT planet, event FROM Movements WHERE date<'" & $iNow & "' AND movtype='return'")
- _DB_Exec("DELETE FROM Movements WHERE date<'" & $iNow & "' AND movtype='return'")
- ;~ _ArrayDisplay($aExpiredReturns, "Expired Returns")
- For $i = 1 To UBound($aExpiredReturns) - 1
- _DB_Exec("UPDATE Farmlist SET atk = 0 WHERE atk = " & $aExpiredReturns[$i][1])
- $iSlots += 1
- Next
- If $aExpiredReturns[0][0] > 0 Then Return 1
- EndFunc ;==>_Game_Fleet_CheckForExpiredMovements
- Func _Game_Fleet_GetFleetInfo($sFleetBase = "")
- ;~ _DB_Exec("DROP TABLE Movements;")
- ;~ _DB_Exec("DELETE FROM Movements)
- _DB_Exec("DELETE FROM Movements WHERE planetfrom=" & $sCurP)
- Local $sOverView, $aRueckkehr, $aAngriff, $s12 = '[\w\W]+?(?<=(?<=colorGrey|fontBold)">)(\d+)', $aOrbit
- Local $aArray, $aSlots, $aAbschnittAngriff, $aAbschnittRueckkehr
- $s12 = $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12 & $s12
- If $sFleetBase = "" Then
- $sOverView = _WinHTTP_Visit("/planet/buildings/" & $sCurP)
- $sFleetBase = _WinHTTP_Visit("/fleetBase/show/1")
- EndIf
- $aSlots = StringRegExp($sFleetBase, "(\d+).+?von.+?(\d+)", 3)
- $aOrbit = StringRegExp($sFleetBase, "(?i)Orbit(?>[\w\W]+?ship/\d[012]?){12}[\w\W]+?Schiffe" & $s12, 3) ; Schiffe im Orbit
- $aAbschnittAngriff = StringRegExp($sFleetBase, 'Flotten unterwegs([\w\W]+?)<div class="spacer10" style="clear:both;"></div>(?>\s+</div>)', 3)
- $aAbschnittRueckkehr = StringRegExp($sFleetBase, 'Ankommende Truppen([\w\W]+?)<div class="spacer10" style="clear:both;"></div>\s+<div', 3)
- If Not IsArray($aAbschnittAngriff) Then Local $aAbschnittAngriff[1]
- If Not IsArray($aAbschnittRueckkehr) Then Local $aAbschnittRueckkehr[1]
- $aAngriff = StringRegExp($aAbschnittAngriff[0], '(?i)name="(\d+)"[\w\W]+?(?:Angriff auf|Raubzug gegen)\s*(?:Planet )?(\d+|[\w -[]]+)(?>[\w\W]+?ship/\d[012]?){12}[\w\W]+?Schiffe' & $s12 & '[\w\W]+?(\d\d\.\d\d\.\d\d \d\d:\d\d:\d\d)', 3) ; truppen out
- $aRueckkehr = StringRegExp($aAbschnittRueckkehr[0], '(?i)name="(\d+)"[\w\W]{0,500}?kehr von (?:Planet )?(\d+|[\w -]+)(?>[\w\W]+?ship/\d[012]?){12}[\w\W]+?Schiffe' & $s12 & '[\w\W]+?(\d\d\.\d\d\.\d\d \d\d:\d\d:\d\d)', 3) ; Truppen in
- For $i = 0 To UBound($aAngriff) - 1 Step 15
- _DB_Exec("INSERT INTO Movements (event, planet, planetfrom, ships, movtype, date, diff, now) " & _
- "VALUES (" & $aAngriff[$i + 0] & ", " & $aAngriff[$i + 1] & ", '" & $sCurP & "', '" & _ArrayToString($aAngriff, "|", $i + 2, $i + 13) & "', " & '"attack"' & ", '" & _Date_DE2Int($aAngriff[$i + 14]) & "', " & _Date_GetNowDiff($aAngriff[$i + 14]) & ", '" & _NowCalc() & "');")
- _DB_Exec("UPDATE Farmlist SET atk = " & $aAngriff[$i + 0] & ", lastatk = '" & _NowCalc() & "' WHERE target = " & $aAngriff[$i + 1] & " AND planetfrom = " & $sCurP)
- Next
- For $i = 0 To UBound($aRueckkehr) - 1 Step 15
- _DB_Exec("INSERT INTO Movements (event, planet, planetfrom, ships, movtype, date, diff, now) " & _
- "VALUES (" & $aRueckkehr[$i + 0] & ", " & $aRueckkehr[$i + 1] & ", '" & $sCurP & "', '" & _ArrayToString($aRueckkehr, "|", $i + 2, $i + 13) & "', " & '"return"' & ", '" & _Date_DE2Int($aRueckkehr[$i + 14]) & "', " & _Date_GetNowDiff($aRueckkehr[$i + 14]) & ", '" & _NowCalc() & "');")
- _DB_Exec("UPDATE Farmlist SET atk = " & $aRueckkehr[$i + 0] & ", lastatk = '" & _NowCalc() & "' WHERE target = " & $aRueckkehr[$i + 1] & " AND planetfrom = " & $sCurP)
- Next
- ;~ Local $aTmp = _DB_Query("SELECT * From Movements")
- ;~ _ArrayDisplay($aTmp)
- ;~ Exit
- Return $aSlots[1] - $aSlots[0]
- EndFunc ;==>_Game_Fleet_GetFleetInfo
- Func _GUI_UpdateQueue($sHTML, ByRef $c_Queue, $iOverWrite = 0)
- Local $sQueue, $hQueue = GUICtrlGetHandle($c_Queue)
- Local Static $aQueue = StringRegExp($sHTML, '(/building/delEvent/[^"]+)[\w\W]+?colorWhite">([^<]+)[\w\W]+?(\d?\d\d:\d\d:\d\d)(?= Uhr)', 3)
- If $iOverWrite Then $aQueue = StringRegExp($sHTML, '(/building/delEvent/[^"]+)[\w\W]+?colorWhite">([^<]+)[\w\W]+?(\d?\d\d:\d\d:\d\d)(?= Uhr)', 3)
- If Not @error Then
- For $i = 0 To UBound($aQueue) - 3 Step 3
- $sQueue &= $aQueue[$i + 1] & " - fertig um " & $aQueue[$i + 2] & " in " & _Date_sec2time(_DateDiff("s", _NowCalc(), @YEAR & "/" & @MON & "/" & @MDAY & " " & $aQueue[$i + 2])) & @CRLF
- Next
- If $sQueue <> "" Then GUICtrlSetData($c_Queue, $sQueue)
- EndIf
- EndFunc ;==>_GUI_UpdateQueue
- Func _GUI_UpdateListView($sHTML, ByRef $c_Listview)
- Local $aBuildings = StringRegExp($sHTML, 'id="area_(\d+)"[^"]+"([^"]+)', 3)
- ;~ _ArrayDisplay($aBuildings)
- If @error Then Return SetError(1, 0, 0)
- Local $hListView = GUICtrlGetHandle($c_Listview)
- _GUICtrlListView_DeleteAllItems($hListView)
- For $p = 0 To UBound($aBuildings) - 2 Step 2
- Local $sStufe = "", $aStufe = StringRegExp($aBuildings[$p + 1], "Stufe (\d+)", 3)
- If IsArray($aStufe) Then
- $aBuildings[$p + 1] = StringRegExpReplace($aBuildings[$p + 1], "Stufe \d+", "")
- $sStufe = $aStufe[0]
- EndIf
- GUICtrlCreateListViewItem($aBuildings[$p] & "|" & $aBuildings[$p + 1] & "|" & $sStufe, $c_Listview)
- Next
- Return $aBuildings
- EndFunc ;==>_GUI_UpdateListView
- Func _Date_DE2Int($sDate)
- Return StringRegExpReplace($sDate, "(\d\d)\.(\d\d)\.(\d\d) (\d\d:\d\d:\d\d)", "20$3/$2/$1 $4")
- EndFunc ;==>_Date_DE2Int
- Func _Date_GetNowDiff($sDate)
- Return _DateDiff("s", _NowCalc(), StringRegExpReplace($sDate, "(\d\d)\.(\d\d)\.(\d\d) (\d\d:\d\d:\d\d)", "20$3/$2/$1 $4"))
- EndFunc ;==>_Date_GetNowDiff
- Func _Date_sec2time($iSec)
- Local $iRetH = 0, $iRetM = 0, $iRetS = 0
- If $iSec / 3600 >= 1 Then
- $iRetH = Floor($iSec / 3600)
- $iSec = Mod($iSec, 3600)
- EndIf
- If $iSec / 60 >= 1 Then
- $iRetM = Floor($iSec / 60)
- $iSec = Mod($iSec, 60)
- EndIf
- $iRetS = $iSec
- Return StringFormat("%.2d:%.2d:%.2d", $iRetH, $iRetM, $iRetS)
- EndFunc ;==>_Date_sec2time
- Func _PostEncode($sData)
- Return StringReplace(StringReplace($sData, "[", "%5B"), "]", "%5D")
- EndFunc ;==>_PostEncode
- Func _Wiki_GetShipsData()
- Local $HTTP_Host = "wiki.imperion.de"
- Local $HTTP_Connect = _WinHttpConnect($HTTP_Agent, $HTTP_Host)
- _DB_Exec("CREATE TABLE Ships (id INTEGER PRIMARY KEY, title text, race text, r1 bigint, r2 bigint, r3 bigint, r4 bigint, time text, scase bigint, shield smallint, w_count smallint, w_strength bigint, speed smallint, payload smallint, energy smallint, fuel smallint, capacity smallint, fpcost bitint);")
- ; Terraner
- Local $ter_buildings[12] = ["Sonde", "Jäger", "Schlachtschiff", "Zerstörer", "Schwerer Kreuzer", "Pulsar", "Bomber", "Tankschiff", "kleiner Transporter", "Recycler", "Großer Recycler", "Kolonieschiff"]
- Local $ter_overview = _WinHTTP_Visit("/wiki/Schiffe_der_Terraner", $HTTP_Connect, $HTTP_Host)
- Local $ter_choosen = StringRegExp($ter_overview, 'a href="/wiki[^"]+Terraner_([^"]+)', 3)
- For $j = 0 To UBound($ter_choosen) - 1
- For $i = 0 To UBound($ter_buildings) - 1
- If _URIDecode($ter_choosen[$j]) = $ter_buildings[$i] Then
- Local $Html_Infos = _WinHTTP_Visit("/wiki/Terraner_" & $ter_choosen[$j], $HTTP_Connect, $HTTP_Host)
- Local $unit_info = StringRegExp($Html_Infos, '0 numeric">(\d+)<[^"]+"[^"]+">(\d+)<[^"]+"[^"]+">(\d+)<[^"]+"[^"]+">(\d+)<[^"]+"[^"]+">([^<]+:[^<]+)', 3)
- ; [0] - Metall [1] - Kristall [2] - Deu/Tri [3] - Zecks [4] - Zeit
- ;~ _ArrayDisplay($unit_info)
- Local $unit_stats = StringRegExp($Html_Infos, '0 numeric">(\d+)<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+', 3)
- ; [0] - [8] - case, shield , w_count , w_strength , speed , payload , energy , fuel , capacity
- Local $unit_fpcost = StringRegExp($Html_Infos, '\((\d+) FP\)', 3)
- If Not IsArray($unit_fpcost) Then Local $unit_fpcost[1] = [0]
- ;~ ClipPut($Html_Infos)
- _DB_Exec("INSERT INTO Ships (id, title, race, r1, r2, r3, r4, time, scase, shield, w_count, w_strength, speed, payload, energy, fuel, capacity, fpcost)" & _
- " VALUES (NULL, '" & _URIDecode($ter_choosen[$j]) & "', 'Terraner', '" & $unit_info[0] & "', '" & $unit_info[1] & "', '" & $unit_info[2] & "', '" & $unit_info[3] & "', '" & $unit_info[4] & "', '" & $unit_stats[0] & "', '" & $unit_stats[1] & "', '" & $unit_stats[2] & "', '" & $unit_stats[3] & "', '" & $unit_stats[4] & "', '" & $unit_stats[5] & "', '" & $unit_stats[6] & "', '" & $unit_stats[7] & "', '" & $unit_stats[8] & "', '" & $unit_fpcost[0] & "');")
- EndIf
- Next
- Next
- ; Titanen
- Local $tit_buildings[12] = ["Observer", "Scout", "Delphi", "Corsair", "Terminator", "Carrier", "Protektor", "Phoenix", "Kleiner Transporter", "Großer Transporter", "Recycler", "Kolonieschiff"]
- Local $tit_overview = _WinHTTP_Visit("/wiki/Schiffe_der_Titanen", $HTTP_Connect, $HTTP_Host)
- Local $tit_choosen = StringRegExp($tit_overview, 'a href="/wiki[^"]+Titanen_([^"]+)', 3)
- For $j = 0 To UBound($tit_choosen) - 1
- For $i = 0 To UBound($tit_buildings) - 1
- If _URIDecode($tit_choosen[$j]) = $tit_buildings[$i] Then
- $Html_Infos = _WinHTTP_Visit("/wiki/Titanen_" & $tit_choosen[$j], $HTTP_Connect, $HTTP_Host)
- $unit_info = StringRegExp($Html_Infos, '0 numeric">(\d+)<[^"]+"[^"]+">(\d+)<[^"]+"[^"]+">(\d+)<[^"]+"[^"]+">(\d+)<[^"]+"[^"]+">([^<]+:[^<]+)', 3)
- ; [0] - Metall [1] - Kristall [2] - Deu/Tri [3] - Zecks [4] - Zeit
- $unit_stats = StringRegExp($Html_Infos, '0 numeric">(\d+)<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+', 3)
- ; [0] - [8] - case, shield , w_count , w_strength , speed , payload , energy , fuel , capacity
- $unit_fpcost = StringRegExp($Html_Infos, '\((\d+) FP\)', 3)
- If Not IsArray($unit_fpcost) Then Local $unit_fpcost[1] = [0]
- _DB_Exec("INSERT INTO Ships (id, title, race, r1, r2, r3, r4, time, scase, shield , w_count, w_strength, speed, payload, energy, fuel, capacity, fpcost)" & _
- " VALUES (NULL, '" & _URIDecode($tit_choosen[$j]) & "', 'Titanen', '" & $unit_info[0] & "', '" & $unit_info[1] & "', '" & $unit_info[2] & "', '" & $unit_info[3] & "', '" & $unit_info[4] & "', '" & $unit_stats[0] & "', '" & $unit_stats[1] & "', '" & $unit_stats[2] & "', '" & $unit_stats[3] & "', '" & $unit_stats[4] & "', '" & $unit_stats[5] & "', '" & $unit_stats[6] & "', '" & $unit_stats[7] & "', '" & $unit_stats[8] & "', '" & $unit_fpcost[0] & "');")
- EndIf
- Next
- Next
- ; Xen
- Global $xen_buildings[12] = ["Zek", "Zekkon", "Xnair", "Mylon", "Maxtron", "Mutterschiff", "Suikon", "Psikon", "Macid", "Bomber", "Octopon", "Kolonieschiff"]
- Local $xen_overview = _WinHTTP_Visit("/wiki/Schiffe_der_Xen", $HTTP_Connect, $HTTP_Host)
- Local $xen_choosen = StringRegExp($xen_overview, 'a href="/wiki[^"]+Xen_([^"]+)', 3)
- For $j = 0 To UBound($xen_choosen) - 1
- For $i = 0 To UBound($xen_buildings) - 1
- If _URIDecode($xen_choosen[$j]) = $xen_buildings[$i] Then
- $Html_Infos = _WinHTTP_Visit("/wiki/Xen_" & $xen_choosen[$j], $HTTP_Connect, $HTTP_Host)
- $unit_info = StringRegExp($Html_Infos, '0 numeric">(\d+)<[^"]+"[^"]+">(\d+)<[^"]+"[^"]+">(\d+)<[^"]+"[^"]+">(\d+)<[^"]+"[^"]+">([^<]+:[^<]+)', 3)
- ; [0] - Metall [1] - Kristall [2] - Deu/Tri [3] - Zecks [4] - Zeit
- $unit_stats = StringRegExp($Html_Infos, '0 numeric">(\d+)<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+<[^"]+"[^"]+">(\d)+', 3)
- ; [0] - [8] - case, shield , w_count , w_strength , speed , payload , energy , fuel , capacity
- $unit_fpcost = StringRegExp($Html_Infos, '\((\d+) FP\)', 3)
- If Not IsArray($unit_fpcost) Then Local $unit_fpcost[1] = [0]
- _DB_Exec("INSERT INTO Ships (id, title, race, r1, r2, r3, r4, time, scase, shield, w_count, w_strength, speed, payload, energy, fuel, capacity, fpcost)" & _
- " VALUES (NULL, '" & _URIDecode($xen_choosen[$j]) & "', 'Xen', '" & $unit_info[0] & "', '" & $unit_info[1] & "', '" & $unit_info[2] & "', '" & $unit_info[3] & "', '" & $unit_info[4] & "', '" & $unit_stats[0] & "', '" & $unit_stats[1] & "', '" & $unit_stats[2] & "', '" & $unit_stats[3] & "', '" & $unit_stats[4] & "', '" & $unit_stats[5] & "', '" & $unit_stats[6] & "', '" & $unit_stats[7] & "', '" & $unit_stats[8] & "', '" & $unit_fpcost[0] & "');")
- EndIf
- Next
- Next
- EndFunc ;==>_Wiki_GetShipsData
- Func _Wiki_GetBuildData()
- Local $HTTP_Host = "wiki.imperion.de"
- Local $HTTP_Connect = _WinHttpConnect($HTTP_Agent, $HTTP_Host)
- _DB_Exec("CREATE TABLE Buildings (id INTEGER PRIMARY KEY, title text, race text, lvl smallint(2), r1 bigint, r2 bigint, r3 bigint, time text, energy smallint);")
- ; Terraner
- Local $ter_buildings[29] = ["Metallmine", "Kristallmine", "Deuteriumplattform", "Hochofen", "Kristallmühle", "Deuteriumfilter", "Solarfarm", "Windkraftwerk", _
- "Wasserkraftwerk", "Fusionskraftwerk", "AEC", "Metalllager", "Kristalllager", "Deuteriumlager", "Schiffswerft", "Waffenfabrik", "Raketensilo", _
- "Flottenstützpunkt", "Impulsscanner", "Hangar", "Forschungsgebäude", "Botschaft", "Bauhof", "Recyclinghof", "Rohstoffversteck", "Handelszentrum", _
- "Kolonisierungscenter", "Zivile_Schiffswerft", "Roboterfabrik"]
- Local $ter_overview = _WinHTTP_Visit("/wiki/Gebäude_der_Terraner", $HTTP_Connect, $HTTP_Host)
- Local $ter_choosen = StringRegExp($ter_overview, 'a href="/wiki[^"]+Terraner_([^"]+)', 3)
- For $j = 0 To UBound($ter_choosen) - 1
- For $i = 0 To UBound($ter_buildings) - 1
- If _URIDecode($ter_choosen[$j]) = $ter_buildings[$i] Then
- Local $Html_Infos = _WinHTTP_Visit("/wiki/Terraner_" & $ter_choosen[$j], $HTTP_Connect, $HTTP_Host)
- Local $bld_info = StringRegExp($Html_Infos, '<td>(\d+)[^"]+"r1[^"]+">(\d+)[^"]+"r2[^"]+">(\d+)[^"]+"r3[^"]+">(\d+)[^"]+"time[^>]+>([^<]+)[^\d]+(\d+)', 3)
- ; [0] - Stufe [1] - Metall [2] - Kristall [3] - Deu/Tri [4] - Zeit [5] - Energie // + 6 = nächste Stufe
- For $y = 0 To UBound($bld_info) / 6 - 1 Step +1
- _DB_Exec("INSERT INTO Buildings (id, title, race, lvl, r1, r2, r3, time, energy)" & _
- " VALUES (NULL, '" & $ter_choosen[$j] & "', 'Terraner', '" & $bld_info[0 + 6 * $y] & "', '" & $bld_info[1 + 6 * $y] & "', '" & $bld_info[2 + 6 * $y] & "', '" & $bld_info[3 + 6 * $y] & "', '" & $bld_info[4 + 6 * $y] & "', '" & $bld_info[5 + 6 * $y] & "');")
- Next
- ExitLoop
- EndIf
- Next
- Next
- ; Titanen
- Local $tit_buildings[33] = ["Metallmine", "Kristallmine", "Tritiumplattform", "Hochofen", "Kristallmühle", "Tritiumfilter", "Solarkraftwerk", "Windkraftwerk", _
- "Wasserkraftwerk", "Fusionskraftwerk", "AEC", "Metalllager", "Kristalllager", "Tritiumlager", "Subraumlager", "Energiespeicher", "Schiffswerft", _
- "Waffenfabrik", "Flottenstützpunkt", "Schildgenerator", "Richtscanner", "Störsender", "Sprungtor", "Tarngenerator", "Dimensionsmodulator", "Forschungslabor", _
- "Botschaft", "Bauhof", "Zivile_Schiffswerft", "Teleporter", "Roboterfabrik", "Rohstoffversteck", "Transmitter"], $tit_overview = _WinHTTP_Visit("/wiki/Gebäude_der_Titanen", $HTTP_Connect, $HTTP_Host), $tit_choosen = StringRegExp($tit_overview, 'a href="/wiki[^"]+Titanen_([^"]+)', 3)
- For $j = 0 To UBound($tit_choosen) - 1
- For $i = 0 To UBound($tit_buildings) - 1
- If _URIDecode($tit_choosen[$j]) = $tit_buildings[$i] Then
- $Html_Infos = _WinHTTP_Visit("/wiki/Titanen_" & $tit_choosen[$j], $HTTP_Connect, $HTTP_Host)
- $bld_info = StringRegExp($Html_Infos, '<td>(\d+)[^"]+"r1[^"]+">(\d+)[^"]+"r2[^"]+">(\d+)[^"]+"r3[^"]+">(\d+)[^"]+"time[^>]+>([^<]+)[^\d]+(\d+)', 3)
- ; [0] - Stufe [1] - Metall [2] - Kristall [3] - Deu/Tri [4] - Zeit [5] - Energie // + 6 = nächste Stufe
- For $y = 0 To UBound($bld_info) / 6 - 1 Step +1
- _DB_Exec("INSERT INTO Buildings (id, title, race, lvl, r1, r2, r3, time, energy)" & _
- " VALUES (NULL, '" & $tit_choosen[$j] & "', 'Titanen', '" & $bld_info[0 + 6 * $y] & "', '" & $bld_info[1 + 6 * $y] & "', '" & $bld_info[2 + 6 * $y] & "', '" & $bld_info[3 + 6 * $y] & "', '" & $bld_info[4 + 6 * $y] & "', '" & $bld_info[5 + 6 * $y] & "');")
- Next
- ExitLoop
- EndIf
- Next
- Next
- ; Xen
- Local $xen_buildings[26] = ["Metallmine", "Kristallmine", "Deuteriumplattform", "Hochofen", "Kristallmühle", "Deuteriumfilter", "Photosynthesekraftwerk", "Windkraftwerk", _
- "Thermalkraftwerk", "Fusionskraftwerk", "AEC", "Allgemeinlager", "Deuteriumlager", "Bioreaktor", "Kleine_Schiffswerft", "Große_Schiffswerft", _
- "Waffenfabrik", "Flottenstützpunkt", "Raketensilo", "Zekhöhle", "Brain", "Entwicklungszentrum", "Botschaft", "Bauhof", "Rohstoffversteck", _
- "Handelszentrum"], $xen_overview = _WinHTTP_Visit("/wiki/Gebäude_der_Xen", $HTTP_Connect, $HTTP_Host), $xen_choosen = StringRegExp($xen_overview, 'a href="/wiki[^"]+Xen_([^"]+)', 3)
- For $j = 0 To UBound($xen_choosen) - 1
- For $i = 0 To UBound($xen_buildings) - 1
- If _URIDecode($xen_choosen[$j]) = $xen_buildings[$i] Then
- $Html_Infos = _WinHTTP_Visit("/wiki/Xen_" & $xen_choosen[$j], $HTTP_Connect, $HTTP_Host)
- $bld_info = StringRegExp($Html_Infos, '<td>(\d+)[^"]+"r1[^"]+">(\d+)[^"]+"r2[^"]+">(\d+)[^"]+"r3[^"]+">(\d+)[^"]+"time[^>]+>([^<]+)[^\d]+(\d+)', 3)
- ; [0] - Stufe [1] - Metall [2] - Kristall [3] - Deu/Tri [4] - Zeit [5] - Energie // + 6 = nächste Stufe
- ;_ArrayDisplay($bld_info)
- For $y = 0 To UBound($bld_info) / 6 - 1 Step +1
- _DB_Exec("INSERT INTO Buildings (id, title, race, lvl, r1, r2, r3, time, energy)" & _
- " VALUES (NULL, '" & $xen_choosen[$j] & "', 'Xen', '" & $bld_info[0 + 6 * $y] & "', '" & $bld_info[1 + 6 * $y] & "', '" & $bld_info[2 + 6 * $y] & "', '" & $bld_info[3 + 6 * $y] & "', '" & $bld_info[4 + 6 * $y] & "', '" & $bld_info[5 + 6 * $y] & "');")
- Next
- ExitLoop
- EndIf
- Next
- Next
- EndFunc ;==>_Wiki_GetBuildData
- Func _Wiki_GetResearchData()
- Local $HTTP_Host = "wiki.imperion.de"
- Local $HTTP_Connect = _WinHttpConnect($HTTP_Agent, $HTTP_Host)
- _DB_Exec("CREATE TABLE Researches (id INTEGER PRIMARY KEY, title text, race_ter text, race_tit text, race_xen text, lvl smallint, fp_ter bigint, fp_tit bigint, fp_xen bigint);")
- ; Forschungen(Allgemein)
- Local $research[26] = ["Bauplätze", "Gebäudestabilität", "Geologische_Erkundung", "Lagerkapazität", "Teleportation", "Militärische_Raumfahrt_Antriebstechnik", "Militärische_Raumfahrt_Ladekapazität", _
- "Militärische_Raumfahrt_Treibstoffverbrauch", "Zivile_Raumfahrt_Recycling", "Zivile_Raumfahrt_Antriebstechnik", "Zivile_Raumfahrt_Handelsforschung", "Zivile_Raumfahrt_Ladekapazität", _
- "Zivile_Raumfahrt_Wurmlochphysik", "Zivile_Raumfahrt_Spionagetechnik", "Zivile_Raumfahrt_Treibstoffverbrauch", "Zivile_Raumfahrt_Expansionsforschung", "Planetare_Verteidigung_Reparaturquote", _
- "Planetare_Verteidigung_Versteck", "Planetare_Verteidigung_Schildtechnik", "AEC-Energie", "Fusionsenergie", "Solarenergie", "Wasserkraft", "Thermalenergie", "Windenergie", "Qi-Unit"]
- Local $race[4][4] = [["Teleportation", "x", "Titanen", "x"],["Planetare_Verteidigung_Schildtechnik", "x", "Titanen", "x"],["Wasserkraft", "Terraner", "Titanen", "x"],["Thermalenergie", "x", "x", "Xen"]] ; Ausnahmen, die nur von [...] geforscht werden können!
- ; Rassenspezifisch^
- Local $4all[3] = ["AEC-Energie", "Fusionsenergie", "Zivile_Raumfahrt_Expansionsforschung"]
- ; Für alle gleich^
- Local $races, $tit, $ter, $xen
- Local $overview = _WinHTTP_Visit("/wiki/Alle_Forschungen", $HTTP_Connect, $HTTP_Host)
- Local $choosen = StringRegExp($overview, 'a href="/wiki[^"]+Forschung_([^"]+)', 3)
- For $j = 0 To UBound($choosen) - 1
- For $i = 0 To UBound($research) - 1
- If _URIDecode($choosen[$j]) = $research[$i] Then
- Local $Html_Infos = _WinHTTP_Visit("/wiki/Forschung_" & $choosen[$j], $HTTP_Connect, $HTTP_Host)
- If _URIDecode($choosen[$j]) = "Bauplätze" Then ClipPut($Html_Infos)
- For $l = 0 To UBound($race) - 1
- If $research[$i] = $race[$l][0] Then
- $races = 0
- Local $racepos[1]
- If $race[$l][1] <> "x" Then
- $tit = "x"
- Else
- $tit = "o"
- EndIf
- If $race[$l][2] <> "x" Then
- $ter = "x"
- Else
- $ter = "o"
- EndIf
- If $race[$l][3] <> "x" Then
- $xen = "x"
- Else
- $xen = "o"
- EndIf
- For $t = 1 To 3
- If $race[$l][$t] = "x" Then $races += 1 ; $races = Für die Rassen gibt es das nicht!
- If $race[$l][$t] <> "x" Then _ArrayAdd($racepos, $t)
- Next
- If 3 - $races = 1 Then
- Local $info = StringRegExp($Html_Infos, '<td[^>]{0,20}>\s*(Freischaltung|\d+)[^>]+>[^>]{0,20}>\s*(\s+|\d+)[^>]+>', 3)
- For $s = 0 To UBound($info) - 1 Step +2
- Local $ter_inf = "x"
- Local $xen_inf = "x"
- Local $tit_inf = "x"
- If $racepos[1] = 1 Then
- $ter_inf = $info[$s + 1]
- ElseIf $racepos[1] = 2 Then
- $tit_inf = $info[$s + 1]
- ElseIf $racepos[1] = 3 Then
- $xen_inf = $info[$s + 1]
- EndIf
- _DB_Exec("INSERT INTO Researches (id, title, race_tit, race_ter, race_xen, lvl, fp_ter, fp_tit, fp_xen)" & _
- " VALUES (NULL, '" & _URIDecode($choosen[$j]) & "', '" & $tit & "', '" & $ter & "', '" & $xen & "', '" & $info[$s] & "', '" & $ter_inf & "', '" & $tit_inf & "', '" & $xen_inf & "');") ; "x" = kann es bauen! Ter/Tit/Xen!!!
- Next
- ExitLoop
- ElseIf 3 - $races = 2 Then
- Local $info = StringRegExp($Html_Infos, '<td[^>]{0,20}>\s*(Freischaltung|\d+)[^>]+>[^>]{0,20}>\s*(\s+|\d+)[^>]+>[^>]{0,20}>\s*(\s+|\d+)[^>]+>', 3)
- For $s = 0 To UBound($info) - 1 Step +3
- Local $ter_inf = "x"
- Local $xen_inf = "x"
- Local $tit_inf = "x"
- For $h = 1 To 2
- If $racepos[$h] = 1 Then
- $ter_inf = $info[$s + $h]
- ElseIf $racepos[$h] = 2 Then
- $tit_inf = $info[$s + $h]
- ElseIf $racepos[$h] = 3 Then
- $xen_inf = $info[$s + $h]
- EndIf
- Next
- _DB_Exec("INSERT INTO Researches (id, title, race_tit, race_ter, race_xen, lvl, fp_ter, fp_tit, fp_xen)" & _
- " VALUES (NULL, '" & _URIDecode($choosen[$j]) & "', '" & $tit & "', '" & $ter & "', '" & $xen & "', '" & $info[$s] & "', '" & $ter_inf & "', '" & $tit_inf & "', '" & $xen_inf & "');") ; "x" = kann es bauen! Tit/Ter/Xen!!!
- Next
- ExitLoop
- EndIf
- ElseIf $research[$i] = $4all[0] Or $research[$i] = $4all[1] Or $research[$i] = $4all[2] Then
- Local $info = StringRegExp($Html_Infos, '<td[^>]{0,20}>\s*(Freischaltung|\d+)[^>]+>[^>]{0,20}>\s*(\s+|\d+)[^>]+>', 3)
- For $s = 0 To UBound($info) - 1 Step +2
- _DB_Exec("INSERT INTO Researches (id, title, race_tit, race_ter, race_xen, lvl, fp_ter, fp_tit, fp_xen)" & _
- " VALUES (NULL, '" & _URIDecode($choosen[$j]) & "', 'x', 'x', 'x', '" & $info[$s] & "', '" & $info[$s + 1] & "', '" & $info[$s + 1] & "', '" & $info[$s + 1] & "');") ; "x" = kann es bauen! Ter/Tit/Xen!!!
- Next
- ExitLoop
- ElseIf $research[$i] <> $race[$l][0] And $l = UBound($race) - 1 Then
- Local $info = StringRegExp($Html_Infos, '<td[^>]{0,20}>\s*(Freischaltung|\d+)[^>]+>[^>]{0,20}>\s*(\s+|\d+)[^>]+>[^>]{0,20}>\s*(\s+|\d+)[^>]+>[^>]{0,20}>\s*(\s+|\d+)[^>]+>', 3)
- For $s = 0 To UBound($info) - 1 Step +4
- _DB_Exec("INSERT INTO Researches (id, title, race_tit, race_ter, race_xen, lvl, fp_ter, fp_tit, fp_xen)" & _
- " VALUES (NULL, '" & _URIDecode($choosen[$j]) & "', 'x', 'x', 'x', '" & $info[$s] & "', '" & $info[$s + 1] & "', '" & $info[$s + 2] & "', '" & $info[$s + 3] & "');") ; "x" = kann es bauen! Ter/Tit/Xen!!!
- Next
- EndIf
- Next
- EndIf
- Next
- Next
- EndFunc ;==>_Wiki_GetResearchData
- Func _URIDecode($sData)
- ; Author: Prog@ndy
- Local $aData = StringSplit(StringReplace($sData, "+", " ", 0, 1), "%")
- $sData = ""
- For $i = 2 To $aData[0]
- $aData[1] &= Chr(Dec(StringLeft($aData[$i], 2))) & StringTrimLeft($aData[$i], 2)
- Next
- Return BinaryToString(StringToBinary($aData[1], 1), 4)
- EndFunc ;==>_URIDecode
- Func _URLEncode($sData)
- ; Author: Prog@ndy
- Local $aData = StringSplit(BinaryToString(StringToBinary($sData, 4), 1), "")
- Local $nChar
- $sData = ""
- For $i = 1 To $aData[0]
- $nChar = Asc($aData[$i])
- Switch $nChar
- Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
- $sData &= $aData[$i]
- Case 32
- $sData &= "+"
- Case Else
- $sData &= "%" & Hex($nChar, 2)
- EndSwitch
- Next
- Return $sData
- EndFunc ;==>_URLEncode
- Func _DB_Start()
- Local $fFE
- _SQLite_Startup()
- If @error > 0 Then
- MsgBox(16, "SQLite Error", "SQLite.dll Can't be Loaded!")
- Exit -1
- EndIf
- ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CR)
- If FileExists(@ScriptDir & "\Data._iB") Then $fFE = True
- _SQLite_Open(@ScriptDir & "\Data._iB")
- If Not $fFE Then _DB_FirstStartUp()
- EndFunc ;==>_DB_Start
- Func _DB_Shutdown()
- _SQLite_Shutdown()
- EndFunc ;==>_DB_Shutdown
- Func _DB_Exec($sMyQuery, $hDB = -1, $iSLN = @ScriptLineNumber)
- ConsoleWrite("+> SQLite Exec, Line " & $iSLN & @TAB & $sMyQuery & @CRLF)
- Local $iRet = _SQLite_Exec($hDB, $sMyQuery)
- Return SetError(@error, @extended, $iRet)
- EndFunc ;==>_DB_Exec
- Func _DB_Query($sMyQuery, $hDB = -1, $iSLN = @ScriptLineNumber)
- ConsoleWrite("-> SQLite Query, Line " & $iSLN & @TAB & $sMyQuery & @CRLF)
- Local $hQuery, $aCol = 0, $iRow = 0, $hSize = 1000, $vSize = 0
- Dim $aRet[1000][50]
- _SQLite_Query($hDB, $sMyQuery, $hQuery)
- While _SQLite_FetchData($hQuery, $aCol) = $SQLITE_OK
- $iRow += 1
- If $iRow = $hSize - 1 Then
- $hSize += 2000
- ReDim $aRet[$hSize][UBound($aRet, 2)]
- EndIf
- For $i = 0 To UBound($aCol) - 1
- If $vSize < $i Then $vSize = $i
- $aRet[$iRow][$i] = $aCol[$i]
- Next
- WEnd
- $aRet[0][0] = $iRow
- $aRet[0][1] = $vSize + 1
- ReDim $aRet[$aRet[0][0] + 1][$aRet[0][1]]
- Return $aRet
- EndFunc ;==>_DB_Query
- Func _DB_FirstStartUp()
- ;~ _DB_Exec("DROP TABLE Movements")
- ;~ _DB_Exec("DROP TABLE Reports")
- _DB_Exec("CREATE TABLE Movements (event INTEGER PRIMARY KEY, planetfrom BIGINT, planet INTEGER, ships TEXT,movtype TEXT, now TEXT, diff INTEGER, date TEXT, cap INTEGER);")
- _DB_Exec("CREATE TABLE Reports (id INTEGER PRIMARY KEY, planet bigint, cap bigint, attacker text, defender text, r1 bigint, r2 bigint, r3 bigint, date text, planetdef text, schutt text);")
- MsgBox(0, "", "Lade Spiel Informationen herunter.")
- _Wiki_GetShipsData()
- _Wiki_GetResearchData()
- _Wiki_GetBuildData()
- MsgBox(0, "", "Download abgeschlossen. Farmlist erstellen (Die funktion musst du selbst noch anpassen!")
- MsgBox(0, "", "_Game_Farm_CreateFarmList(), Zeile " & @ScriptLineNumber + 1)
- _Game_Farm_CreateFarmList()
- Sleep(10)
- EndFunc ;==>_DB_FirstStartUp
- Func _HKS()
- Local $aTmp
- Switch @HotKeyPressed
- Case "!{Q}"
- $aTmp = _DB_Query(InputBox("DB Query", "Enter a DB Query", "SELECT * FROM "))
- If UBound($aTmp) > 1 Then _ArrayDisplay($aTmp, "DB Query Results")
- Case "!{C}"
- Call(InputBox("Call", "Call Function"))
- Case "!{E}"
- _DB_Exec(InputBox("DB Exec", "Enter a DB Exec Command"))
- EndSwitch
- EndFunc ;==>_HKS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement