Funktioniert es nicht wenn du das einfach beim ex-stil einfügst. Dem sollte doch egal sein ob das transparent ist oder nicht.
Beiträge von Shadowigor
-
-
Sieh dir mal den @error an nach dem ShellExecute. Wenn der i.O. ist, weis ich auch nicht. Liegts vielleicht am Spiel?
-
Versuchs mal so:
Spoiler anzeigen
[autoit]$aTxt = _FileReadToArray($IN_Path, $aRecords)
[/autoit] [autoit][/autoit] [autoit]If Not $sTxt Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(4096, "Fehler", "Fehler beim Einlesen der Datei in das Array!" & @CRLF & "Fehlercode: " & @error)
Exit
EndIfFor $i = 1 To $aTxt[0] - 1
[/autoit] [autoit][/autoit] [autoit]
$aTxt[$i] = StringReplace($aTxt[$i], $Old_P, $New_P)
Next_FileWriteFromArray($New_Path, $aRecords, 1)
[/autoit]
Ist halt etwas umständlich aber wenns nur so funktioniert...Und das mit der 8 am anfang ist, weil _FileReadToArray im ersten Element die Anzahl der eingelesenen Zeilen hat. Und die hast du dann auch noch reingeschrieben.
-
Ok, das heisst, dass er das File nicht öffnen kann. Ich vermute, dass das File gar nicht existiert. Überprüfe nochmal den Pfad den du eingegeben hast. Falls der definitiv stimmt, liegt es vielleicht daran:
Zitat aus der Hilfe:
"Das Öffnen einer Datei kann möglicherweise fehlschlagen, durch fehlende Zugriffsrechte oder Attribute."
Das solltest du auch noch überprüfen. Sonst weis ich auch gerade nicht mehr weiter. -
Ich hoffe die Kommentare sind dir Erklärung genug. Und sonst sagst dus einfach.
Spoiler anzeigen
[autoit]$hOld = FileOpen($Origin, 0) ; So öffnest du das alte File,
[/autoit]
$hNew = FileOpen($New_Path, 2) ; und das neue File. Mit dem Flag = 0 öffnest du es zum lesen und
; mit dem Flag = 2 öffnsest du es zum schreiben und löschst den vorherigen Inhalt
$sOld = FileRead($hOld) ; Hier liest du das alte File komplett ein
$sNew = StringReplace($sOld, $Old_P, $New_P) ; Um dann hier den Inhalt des Files zu prüfen und $Old_P durch $New_P zu ersetzen
FileWrite($hNew, $sNew) ; Nach dem ersetzen schreibst du den erhaltenen Text in das neue File
FileClose($hOld) ; Zum schluss die Files wider schliessen
FileClose($hNew)
MsgBox(0, "Fertig!", "Vorgang abgeschlossen!") ; Und vielleicht noch mitteilen, dass du Fertig bist. z.B. so.
Gruss Shadowigor -
Vermutlich kannst du bei Workingdir nicht "" nehmen. Probiers mal mit Default:
Run("D:/Spiele/Fifa 12/Game/set.exe", Default, @SW_MAXIMIZE)
-
Das könnte daran liegen, dass du ein Leerzeichen im Pfad hast. So sollte es gehen:
ShellExecute("D:/Spiele/Fifa" & Chr(32) & "12/Game/set.exe", "", @SW_MAXIMIZE)
Hab das Problem auch schon gehabt. Bin mir aber nicht mehr sicher ob genau das die lösung war.
-
Also. Serverseitig siehts gut aus. Auf der Client Seite müsstest du aber noch was ändern.
Du frägst wahrscheinlich zu schnell TCPRecv ab. Wenn du TCPRecv sofort und nur einmal abfrägst hat es der Server noch überhaupt nicht gesendet.
Ich würde es so machen (einfach dort einsetzen wo du auskommentiert hast):Spoiler anzeigen
[autoit]If $Data = "Space" Then
[/autoit]
Do
$incomming = TCPRecv($ConnectedSocket, 2048)
Until $incomming <> ""
;$incomming = StringSplit($incomming, "|") Geht nicht gut. Du würdest sonst das ganze Arrray in der MsgBox anzeigen wollen.
MsgBox(0, "Incoming Message", $incomming)
$incomming = ""
EndIf
Sollte funktionieren.Gruss Shadowigor
-
Wenn du das Passwort beim ersten mal richtig eingibst, kommt er gar nicht in die Schleife. Du machst es am besten so:
[autoit]
[/autoit]
$input = "" ; Dann kommt er sicher in die Schleife
$passwort = "fifa12tl050493"
while ($input <> $passwort)
if($input = $passwort) Then
ShellExecute("D:/Spiele/Fifa 12/Game/set.exe", "", @SW_MAXIMIZE)
Else
$input = InputBox("Password-Abfrage", "Bitte Passwort eingeben:")
EndIf
;Sleep(200); Kann weggelassen werden. Bringt gar nichts.
WEndGruss Shadowigor
-
Also das sollte nur passieren wenn du gar nichts machst, aber wenn du auf das X drückst sollte da nicht 0 sein.
-
Mit GuiGetMsg(1) bekommst du ein Array in dem auch das GUI, welches die Meldung sendet enthalten ist. Einfach mal die Hilfe anschauen.
-
Zitat aus der Hilfe:
"$as_Body [optional] Baut den Inhalt der Email als 1-dimensionales Array aus Strings auf. Jeder Wert innerhalb des Arrays wird in der Email mit @CRLF beendet."$as_Body muss also ein Array aus Strings sein und nicht ein einzelner String. Am besten machst du das also so:
$as_Body = StringSplit($rueckgabe, @CRLF, 2)Und bei dieser Funktion liegt es definitiv nicht an Lotus Notes.
Gruss Shadowigor
-
Wie Schnuffel schon gesagt hat, bei mir funktioniert es auch. Aber bei dir scheint ja gar nichts zu gehen. Kann es sein das es an Outlook liegt? Hast du schon mal probiert ein weiteres Script zu schreiben, in dem du nur ein E-Mail sendest mit einem definierten Text? Wenn das auch nicht klappt, liegt das Problem wohl anderswo.
-
Mir ist noch nicht ganz klar für was das GUI ist, aber so wie du das beschrieben hast müsste es eigentlich gehen. Hast du schon geprüft ob dein Rückgabewert überhaupt stimmt?
-
Du kannst doch bei Body einfach deine Variable einfügen. Das müsste eigentlich gehen. Oder sonst musst du dein Problem genauer beschreiben.
-
Also erstens würde ich das ganze mit Arrays machen (Kannst du sonst Hier nachlesen). Das würde der übersicht sehr gut tun.
Nun zu deinem Problem. Bei der überprüfung des gewinnes von Spieler 2 (If $Feld1 = 2 And $Feld2 = 2 ... u.s.w) hast du bei der ganz letzten prüfung $Feld3 = 1 And ... geschrieben und nicht $Feld3 = 2 And ...Gruss Shadowigor
-
So z.B.:
[autoit]$i = IniRead("m47.ini", "Freedom_Server_Wechsel", "Wert", "") + 1
[/autoit]
if $i = 11 Then $i = 1Gruss Shadowigor
-
Also ich wäre interessiert, wenn du immer noch suchst. Mit Irrlicht hab ich jetzt nicht so wahnsinnig viel Erfahrung. Hab nur mal was mit XNA (C#) gemacht.
Ich bin aber immer offen für neues und im Moment bin ich sowieso auf der suche nach einem neuen Projekt.
Würde mich freuen mithelfen zu dürfen.Gruss Shadowigor
-
z.B. mit AdLibRegister. Nach einer bestimmten Zeit rufst du einfach eine Funktion auf, die das Programm beendet. (siehe Hilfe)
Wenn sich das Programm aber aufgehängt hat und nichts mehr geht musst du wohl parallel ein zweites Prog. laufen lassen, welches ersteres und sich selber nach einer gewissen Zeit beendet.Gruss Shadowigor
-
Du fragst ab ob die Gesamtdauer = 0 ist. Wenn du 1 eingibst, ist Sie zu beginn jedoch 7.2 da kannst du noch so oft 1 abziehen du wirst nie genau 0 erhalten. Nimm statdessen einfach z.B. Gesamtdauer < 0.
Gruss Shadowigor