.Inf datei unbemerkt ändern?

10/11/2010 14:28 WiiZocker#1
Hallo, ich spiele derzeit ein spiel namens "Stranded II" dafür möchte ich einen kleinen Hack erstellen wodurch man unendlich leben hat.

Da fast alle werte in .Inf dateien geschrieben sind, und sie sich per "Editor" öffnen lassen, habe ich gesehen das dort :
health=100
steht, wenn ich dies ändere habe ich auch mehr leben, wie kann ich diesen eintrag per AutoIt verändern?

Ich hoffe auf "positive" antworten, habe in Google nichts hilfreiches gefunden )=

MfG WiiZocker

Edit:
Fast vergessen, lasst euch nicht von dem "Unbemerkt" beirren, ich habe nichts schlimmes vor, damit meinte ich das der Benutzer die Datei nicht selber umschreiben muss.
10/11/2010 14:45 v0lle#2
Wieso machst du es nicht per CE, du suchst dir die Werte raus , wenn du welche findest änderst du sie einfach. Wenn du es in AutoIt machen willst dann nimmst halt die Pointer
includest die Pointer.au3 Datei nimmst den Befehl MemoryPointerWrite. Das ist doch nicht so schwer (:
Ich hab mal bei Google geguckt und dort steht man kann .inf Dateien mit Wordpad ändern.
Da .inf Dateien ein Unicode haben und Wordpad Unicode-Fähig ist ^^
10/11/2010 15:07 WiiZocker#3
Ich würde es ja per CE machen aber ich verstehe dieses Pointergedöhns nicht wirklich, kann ich die units.inf datei nicht per Autoit ändern?
Habe es schon mit vielen dingen probiert-.-

Oder kann man autoit eine Bestimmte zeile makieren lassen???
10/11/2010 15:25 lolkop#4
les die datei doch als ganzes ein und ändere per stringreplace was du ändern willst
10/11/2010 15:58 WiiZocker#5
Wie genau kann ich die denn einlesen?
Mit welchem befehl geht das?
10/11/2010 16:09 lolkop#6
Quote:
Originally Posted by WiiZocker View Post
Wie genau kann ich die denn einlesen?
Mit welchem befehl geht das?
fileread
10/11/2010 16:20 WiiZocker#7
Und wie genau?
Ich arbeite wenig mit File....
Muss ich es iwie in ne variabel oder so speichern?
10/11/2010 16:42 lolkop#8
guck dir doch erstmal die hilfe dazu an
10/11/2010 16:59 WiiZocker#9
Hmm, filereadline wäre da doch besser oder?
Er braucht ja nur eine Linie lesen.

Wie genau stell ich das an?
Ich bekomme des ned hin >.<
10/11/2010 17:07 lolkop#10
Edit:
musst zuerst den inhalt auslesen, da beim öffnen mit parameter 2 wohl direkt der inhalt gelöscht wird...
Code:
$inhalt = FileRead('dateiname')
$file = FileOpen('dateiname', 2)
FileWrite($file, StringReplace($inhalt, 'health=100', 'health=999'))
FileClose($file)
10/11/2010 22:30 WiiZocker#11
Hey, danke dir es funktioniert super :D
Habe allerdings noch ein problem, ich weiß nicht woran es liegt.

Unzwar, ich habe 3 Filewrite(...) hintereinander aber er ändert nur den ersten eintrag vom Filewrite(...)

Er soll aber alle 3 Filewrite(...) ausführen.
Eine fehlermeldung bekomme ich nicht.)=

Kurz gesagt, er führt nur den ersten der 3 Filewrite(...) aus.

Hier ein ausschnitt:

PHP Code:
Func HDM() ;Niemals [H]unger [D]urst und nie [M] =[HDM]
If 
GUICtrlRead($HDM_Werte) = 1 Then
$UnitsLive 
FileRead("mods\S2Ext\sys\units.inf")
$units FileOpen("mods\S2Ext\sys\units.inf"2)
FileWrite($unitsStringReplace($UnitsLive"#2""timer "&"self"&",1000,0;"))
FileWrite($unitsStringReplace($UnitsLive"#3""on:timer {"))
FileWrite($unitsStringReplace($UnitsLive"#4""jade -100;}"))
FileClose($units)
MsgBox(0,"Hinweis","Kein Hunger,Durst und nie Müde Aktiviert.")
Else
    
    
    

EndIf
EndFunc 
10/11/2010 22:52 lolkop#12
Quote:
Originally Posted by WiiZocker View Post
Hey, danke dir es funktioniert super :D
Habe allerdings noch ein problem, ich weiß nicht woran es liegt.

Unzwar, ich habe 3 Filewrite(...) hintereinander aber er ändert nur den ersten eintrag vom Filewrite(...)

Er soll aber alle 3 Filewrite(...) ausführen.
Eine fehlermeldung bekomme ich nicht.)=

Kurz gesagt, er führt nur den ersten der 3 Filewrite(...) aus.

Hier ein ausschnitt:

PHP Code:
Func HDM() ;Niemals [H]unger [D]urst und nie [M] =[HDM]
If 
GUICtrlRead($HDM_Werte) = 1 Then
$UnitsLive 
FileRead("mods\S2Ext\sys\units.inf")
$units FileOpen("mods\S2Ext\sys\units.inf"2)
FileWrite($unitsStringReplace($UnitsLive"#2""timer "&"self"&",1000,0;"))
FileWrite($unitsStringReplace($UnitsLive"#3""on:timer {"))
FileWrite($unitsStringReplace($UnitsLive"#4""jade -100;}"))
FileClose($units)
MsgBox(0,"Hinweis","Kein Hunger,Durst und nie Müde Aktiviert.")
Else
    
    
    

EndIf
EndFunc 
hast du dir überhaupt mal angeschaut was der code macht den ich als beispiel gepostet habe? -.-
sry aber manchmal erreicht man einen punkt im leben wo komplett ohne denken nichts mehr geht...

du liest die datei ein und speicherst den inhalt unter "$UnitsLive" (warum auch immer du die so genannt hast). danach nimmst du den inhalt und änderst was drann... überschreibst aber nicht den alten inhalt... das veränderte schreibst du dann neu in die datei... danach nimmst du wieder den originalen inhalt den du anfangs ausgelesen hast, und änderst wieder was drann ohne was zu speichern, und schreibst das geänderte wieder ins file... damit ist natürlich die erste änderung wieder weg. das ganze wiederholst du dann nochmal...

ums mal für idition verständlich auszudrücken... du hast nen string "abcde"
also:
Code:
$string = "abcde"
jetz sagste dir hey ich mach mal das a zum b und geb das inner console aus:
Code:
ConsoleWrite(StringReplace($string, 'a', 'b')&@CRLF)
und inner console steht "bbcde"...
ui toll änder ich mal das c zum a
Code:
ConsoleWrite(StringReplace($string, 'c', 'a')&@CRLF)
jetz steht inner console "abade" und du fragst dich ersthaft warum?

is ja schön das du den ausgang der funktion tatsächlich direkt weiterverarbeitest, ohne das original anzufassen. nur ist das ganze recht witzlos, wenn du danach das ganze noch weiterverarbeiten willst, und dafür wieder das original nutzt...

also entweder du arbeitest mit zwischen ergebnissen, oder du verkettest die replace befehle... wie dem auch sei, wenn du schon von anderen hilfe nutzt, versuch mal nicht nur deine Strg, C und V tasten zu nutzen dabei, sondern vielleicht auchmal ganz kurz deinen kopf einschalten :P
du würdest dich wundern, wie viele sinnlose posts/threads man damit sparen könnte hier im forum.
10/11/2010 23:25 WiiZocker#13
Jetzt werd mal nicht beleidigent, habe das auch erst gerade gemerkt das es immer neu in der datei geschrieben wid.
Hatte plötzlich 300.000 zeilen.
Naja egal, du musst mich hier nicht beleidigen und ja, ich denke selber auch nach, wenn ich Hilfe brauche, frage ich hier halt nach, wozu issen Forum sonst da?

Ich denke hier darf man fragen stellen, aber NEIN man wird ja beleidigt wenn mans nicht nach dem ersten mal kapiert.

Solche antworten hasse ich richtig...

Warum ich es $UnitsLive genannt habe?
Das ist mein Problem oder???


BTT:
Was muss ich denn jzt machen?
Welche zahl ändert das skript und schreibt nicht das vorher eingelesende komplett in die datei?

Ich habe zwar die Hilfe gelesen, aber es war nicht wirklich meine lösung.