bestimmte stelle aus txt auslesen

  • Hi leute ICH HABE DIE SUFU GENUTZT

    aber leider nix dahingehendes gefunden
    und zwar habe ich eine txt datei an bestimmten stellen steht immer (exp 20)
    die 20 ist jedoch von absatzt zu absatz eine andere zahl
    wie könnste ich das hinbekommen das autoit immer die zahl nach exp ausliest dann löscht mit einer eingegebenen zahl multipliziert und dann das ergebnis an dieser stelle einfügt ?

    Mfg WoW-Unit

    weis nit ob ich blind bin habe grade die deutsche help file durchsucht finde aber unter mathematische funktionen nur sachen was ich nicht mal kenne sinus und so zeug aber nix mit multiplakator

  • Text einlesen, egal womit, dann ->

    [autoit]

    $sNewText = StringRegExpReplace($sOldText, '(\(exp \d+\))', 'Ersetzen mit')

    [/autoit]


    $sNewText mit Filewrite speichern.

    StringRegExpReplace ist eigentlich das gleiche wie StringReplace, nur dass es halt mit regulären Ausdrücken arbeitet.

    \d+ bedeutet eine oder mehrere Zahlen, also 1 oder 12 oder 123 usw.
    (\(exp \d+\)) bedeutet, dass alles was (exp Zahl(en)) entspricht erstzt werden soll ... bliblablu 8|
    ... sehe gerade Du möchtest ja nur auslesen ..., muss jetzt wirklich zu Bett !

    Zum Auslesen das Gleiche, nur ohne den Replacestring, also

    [autoit]

    $arResult = StringRegExp($sOldText, '(\(exp \d+\))', 3)
    _ArrayDisplay($arResult)

    [/autoit]

    So, gehe jetzt ratzen ..., bis Morgen. ;)

    Gru0
    Greenhorn

    EDIT: Gerade wieder gesehen, was Du genau willst, ... aber heute nicht mehr ... :wacko:


  • Erst mal Danke für die mühe echt nice^^ :rock:


    ich hänge da wo fest...
    ;¸¶±¸´Ï ÀâºÎ
    (monster (name 1) (index 1) (country 0) (race 0) (level 1) (ai 1) (range 20) (sight 160 240) (exp 20) (itemgroup 1 2)
    (str 21) (hth 1) (int 10) (wis 10) (dex 2) (hp 1) (mp 70) (aspeed 2400) (hit 0) (dodge 0)
    (attack 0 7 7) (magic 0 0) (defense 0 0) (absorb 0) (mspeed 1600 800)
    (quest (2 1 901 1) (3 1 902 1) (54 1 1025 1) (8001 1 933 1)))

    da wo exp steht soll die 20 geändert werden
    der rest soll bleiben wie es ist
    und dieser text steht in der initmonster.txt welche im gleichen verzeichnis wie der script liegt
    ich habe versucht deinen befehl zu verwenden und habe halt noch fileopne dafor gesetzt dann passiert gar nichts also wie soll ich hier jetzt bitte weiter kommen ?


    Edit: habe es mal so versucht aber der ersetzt nichts was geau ist hier falsch ?

    Spoiler anzeigen
    [autoit]

    $test = ("test.txt")

    [/autoit] [autoit][/autoit] [autoit]

    StringRegExpReplace($test, "[A-Z]", "@")

    [/autoit]

    In der test txt steht HALLO da soll jeder buchstabe mit nem @ erstezt werdendas prinzip stimmt laut der hilfe (da isses mit ner msg gezeigt)
    da geht das auch mir fehlt nur der Übergang in die txt datei

    P.s. mit fileread gehts auch nit leider


    Edit2:


    Und so leider au nit...

    Spoiler anzeigen
    [autoit]

    $file = FileOpen("test.txt", 1)
    Fileread("test.txt")

    [/autoit] [autoit][/autoit] [autoit]

    StringRegExpReplace("HALLO", "[A-Z]", "ader")

    [/autoit]


    Edit3: So habe schonmal Gui gemacht mit einem button der in den input ein verzeichnis macht in dem verzeichnis liegt dann die InitMonster.txt die es zu Öffnen gillt als test wollte ich eine exe starten per run befehl aber es geht nicht was mache ich hier falsch ?


    Spoiler anzeigen
    [autoit]

    Func _2()
    Run("3dmark06_v110_oct07_installer.exe"& GUICtrlRead($Input1) &)
    EndFunc

    [/autoit]
  • Ich habe mir mal die Zeile genommen die Du abändern möchtest, schau es dir an, vielleicht hilft es dir, hoffe man steigt durch meine Kommentare durch.

    Spoiler anzeigen
    [autoit]


    ; Brauch ich nur für das Beispiel, um das Array anzuzeigen
    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Der neue Wert der in exp rein soll
    $newEXP = 52

    [/autoit] [autoit][/autoit] [autoit]

    ; Mein Beispielstring, könntest auch einen Datei zeilenweise einlesen und da erstetzen
    $str = '(monster (name 1) (index 1) (country 0) (race 0) (level 1) (ai 1) (range 20) (sight 160 240) (exp 20) (itemgroup 1 2)'

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier sucht er nach dem bisherigen Wert
    $arr = StringRegExp($str,'\(exp (\d\d)\)',3)

    [/autoit] [autoit][/autoit] [autoit]

    ; Wenn nicht gefunden soll er das Skript verlassen
    If @error Then Exit

    [/autoit] [autoit][/autoit] [autoit]

    ; Zeige mir den derzeitigen Wert an
    _ArrayDisplay($arr)

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier mache ich den Wechsel zum neuen Wert
    $str1 = StringRegExpReplace($str,'\(exp (\d\d)\)','(exp ' & $newEXP & ')')

    [/autoit] [autoit][/autoit] [autoit]

    ; Anzeigen von altem Wert und neuen Wert, damit man den Unterschied sieht
    MsgBox(0,'',$str & @LF & $str1)

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Ne sorry McPoldy der meckert wegen nem Array


    Xenobiologist

    Voltreffer nur das (exp 20) an anderen stellen auch mal so steht (exp 40)
    Bei der zwanzis soll wenn man es mit 3 Multipliziert (exp 60) und bei dem nächsten dann (exp 120)
    er soll hallt in der txt alles stellen auslesen (exp ??) mit den zahlen soll jede zahl mit ner zahl multiplizieren
    um se dann zu ersetzten

    Spoiler anzeigen

    ;¸¶±¸´Ï ÀâºÎ
    (monster (name 1) (index 1) (country 0) (race 0) (level 1) (ai 1) (range 20) (sight 160 240) (exp 20) (itemgroup 1 2)
    (str 21) (hth 1) (int 10) (wis 10) (dex 2) (hp 1) (mp 70) (aspeed 2400) (hit 0) (dodge 0)
    (attack 0 7 7) (magic 0 0) (defense 0 0) (absorb 0) (mspeed 1600 800)
    (quest (2 1 901 1) (3 1 902 1) (54 1 1025 1) (8001 1 933 1)))

    ;¸¶±¸´Ï Á¤Å½²Û
    (monster (name 2) (index 2) (country 0) (race 0) (level 3) (ai 1) (range 16) (sight 160 240) (exp 40) (itemgroup 2 2)
    (str 27) (hth 2) (int 10) (wis 10) (dex 4) (hp 1) (mp 70) (aspeed 2400) (hit 0) (dodge 0)
    (attack 0 8 8) (magic 0 0) (defense 1 1) (absorb 0) (mspeed 1600 800) (resist 0 0 1 1 1)
    (quest (2 1 901 1) (3 1 902 1) (55 1 1026 1) (8001 1 933 1)))

    ;¸¶±¸´Ï ÷º´
    (monster (name 3) (index 3) (country 0) (race 0) (level 4) (ai 1) (range 20) (sight 160 240) (exp 60) (itemgroup 3 2)
    (str 30) (hth 3) (int 10) (wis 10) (dex 6) (hp 1) (mp 70) (aspeed 2400) (hit 2) (dodge 0)
    (attack 0 9 9) (magic 0 0) (defense 2 2) (absorb 0) (mspeed 1600 800) (resist 0 0 1 1 1)
    (quest (2 1 901 1) (3 1 902 1) (56 1 1027 1) (8001 1 933 1)))

    ;¸¶±¸´Ï ¾àÅ»ÀÚ
    (monster (name 4) (index 4) (country 0) (race 0) (level 5) (ai 1) (range 16) (sight 160 240) (exp 90) (itemgroup 4 2)
    (str 33) (hth 4) (int 10) (wis 10) (dex 8) (hp 3) (mp 70) (aspeed 2000) (hit 5) (dodge 0)
    (attack 0 12 12) (magic 0 0) (defense 4 4) (absorb 0) (mspeed 1600 800) (resist 1 1 2 2 2)
    (quest (2 1 901 1) (3 1 902 1) (8001 1 933 1) (9001 2 923 1)))

    ;³­ÆøÇÑ ÀÛÀº ¸¶±¸´Ï
    (monster (name 5) (index 5) (country 0) (race 0) (level 6) (ai 1) (range 16) (sight 160 240) (exp 120) (itemgroup 5 2)
    (str 36) (hth 5) (int 10) (wis 10) (dex 10) (hp 19) (mp 70) (aspeed 1600) (hit 5) (dodge 0)
    (attack 0 13 13) (magic 0 0) (defense 5 5) (absorb 0) (mspeed 1600 800) (resist 1 1 3 3 3)
    (quest (3 1 902 1) (8001 1 933 1)))

    ;¸¶±¸´Ï È£À§º´»ç
    (monster (name 6) (index 6) (country 0) (race 0) (level 8) (ai 2) (range 20) (sight 160 240) (exp 160) (itemgroup 6 2)
    (str 42) (hth 7) (int 10) (wis 10) (dex 10) (hp 27) (mp 70) (aspeed 1600) (hit 7) (dodge 1)
    (attack 0 16 16) (magic 0 0) (defense 6 6) (absorb 1) (mspeed 1600 800) (resist 2 2 3 3 3)
    (quest (9002 2 924 1) (8001 1 933 1)))

    ;¸¶±¸´Ï È£À§±Ã¼ö
    (monster (name 7) (index 7) (country 0) (race 0) (level 8) (ai 2) (range 96) (sight 160 240) (exp 180) (itemgroup 7 2)
    (str 42) (hth 9) (int 10) (wis 10) (dex 17) (hp 45) (mp 72) (aspeed 2000) (hit 7) (dodge 3)
    (attack 1 18 18) (magic 0 0) (defense 8 8) (absorb 1) (mspeed 1600 800) (resist 3 3 4 4 4)
    (quest (4 2 903 1) (9002 2 924 1) (8001 1 933 1)))

    ;¿ìµÎ¸Ó¸® ¸¶±¸´Ï Á¤Å½²Û
    (monster (name 8) (index 8) (country 0) (race 0) (level 9) (ai 2) (range 20) (sight 160 240) (exp 220) (itemgroup 8 3)
    (str 48) (hth 11) (int 10) (wis 10) (dex 14) (hp 43) (mp 70) (aspeed 1600) (hit 10) (dodge 5)
    (attack 0 23 23) (magic 0 0) (defense 10 10) (absorb 1) (mspeed 1600 800) (resist 5 5 7 7 7)
    (quest (8001 1 933 1)))

    ;¸¶±¸´Ï ÀÚÆøº´
    (monster (name 9) (index 9) (country 0) (race 0) (level 11) (ai 1) (range 20) (sight 160 320) (exp 270) (itemgroup 9 2)
    (str 42) (hth 13) (int 12) (wis 12) (dex 12) (hp 35) (mp 90) (aspeed 1600) (hit 13) (dodge 7)
    (attack 0 29 29) (magic 0 0) (defense 12 12) (absorb 1) (mspeed 1600 800) (resist 4 4 6 6 6)
    (quest (5 2 904 1) (8001 1 933 1)))

    ;¸¶±¸´Ï±º ½Ãüû¼ÒºÎ
    (monster (name 10) (index 10) (country 0) (race 0) (level 13) (ai 1) (range 28) (sight 160 320) (exp 310) (itemgroup 10 2)
    (str 52) (hth 15) (int 8) (wis 8) (dex 21) (hp 15) (mp 70) (aspeed 1600) (hit 16) (dodge 9)
    (attack 0 32 32) (magic 0 0) (defense 14 14) (absorb 2) (mspeed 1600 800) (resist 6 6 9 9 9)
    (quest (6 5 905 1) (8 1 906 1) (9002 6 925 1) (8001 1 933 1)))

    ;¸¶±¸´Ï±º º´»ç
    (monster (name 11) (index 11) (country 0) (race 0) (level 16) (ai 1) (range 28) (sight 160 320) (exp 420) (itemgroup 13 2)
    (str 64) (hth 21) (int 8) (wis 8) (dex 21) (hp 10) (mp 70) (aspeed 1450) (hit 19) (dodge 14)
    (attack 0 50 50) (magic 0 0) (defense 20 20) (absorb 2) (mspeed 1600 800) (resist 9 9 10 10 10)
    (quest (10 2 909 1) (8001 1 933 1)))

    ;¸¶±¸´Ï±º º¸º´
    (monster (name 12) (index 12) (country 0) (race 0) (level 19) (ai 1) (range 28) (sight 160 320) (exp 520) (itemgroup 16 2)
    (str 70) (hth 25) (int 8) (wis 8) (dex 21) (hp 37) (mp 70) (aspeed 1450) (hit 21) (dodge 18)
    (attack 0 58 58) (magic 0 0) (defense 23 23) (absorb 2) (mspeed 1600 800) (resist 11 11 12 12 12)
    (quest (13 2 912 1) (8001 1 933 1)))

    ;¸¶±¸´Ï±º Åõôº´
    (monster (name 13) (index 13) (country 0) (race 0) (level 20) (ai 1) (range 96) (sight 160 320) (exp 550) (itemgroup 17 2)
    (str 72) (hth 27) (int 8) (wis 8) (dex 28) (hp 25) (mp 70) (aspeed 1450) (hit 21) (dodge 20)
    (attack 1 62 62) (magic 0 0) (defense 20 20) (absorb 2) (mspeed 1600 800) (resist 12 12 13 13 13)
    (quest (14 1 913 1) (8001 1 933 1)))

    ;³­ÆøÇÑ ¸¶±¸´Ï±º º´»ç
    (monster (name 14) (index 14) (country 0) (race 0) (level 21) (ai 2) (range 28) (sight 200 320) (exp 600) (itemgroup 18 2)
    (str 74) (hth 29) (int 8) (wis 8) (dex 21) (hp 64) (mp 70) (aspeed 1350) (hit 23) (dodge 21)
    (attack 0 66 66) (magic 0 0) (defense 29 29) (absorb 2) (mspeed 1600 800) (resist 13 13 14 14 14)
    (quest (15 2 914 1) (8001 1 933 1)))

    ;¸¶±¸´Ï±º µ¹°Ý´ë º´»ç
    (monster (name 15) (index 15) (country 0) (race 0) (level 22) (ai 2) (range 28) (sight 200 320) (exp 650) (itemgroup 19 2)
    (str 76) (hth 31) (int 8) (wis 8) (dex 21) (hp 23) (mp 70) (aspeed 1350) (hit 26) (dodge 22)
    (attack 0 70 71) (magic 0 0) (defense 31 31) (absorb 2) (mspeed 1600 800) (resist 13 13 15 15 15)
    (quest (16 1 915 1) (8001 1 933 1)))

    ;¸¶±¸´Ï±º ±â¼ö
    (monster (name 16) (index 16) (country 0) (race 0) (level 23) (ai 1) (range 28) (sight 160 320) (exp 710) (itemgroup 20 2)
    (str 78) (hth 33) (int 8) (wis 8) (dex 21) (hp 29) (mp 70) (aspeed 1350) (hit 27) (dodge 23)
    (attack 0 74 75) (magic 0 0) (defense 33 33) (absorb 2) (mspeed 1600 800) (resist 14 14 16 16 16)
    (quest (17 1 916 1) (8001 1 933 1)))

    ;¸¶±¸´Ï±º Ãë¾Ç´ë
    (monster (name 17) (index 17) (country 0) (race 0) (level 25) (ai 1) (range 28) (sight 160 320) (exp 800) (itemgroup 22 2)
    (str 81) (hth 35) (int 8) (wis 8) (dex 21) (hp 10) (mp 70) (aspeed 1350) (hit 31) (dodge 27)
    (attack 0 86 87) (magic 0 0) (defense 35 35) (absorb 2) (mspeed 1600 800) (resist 15 15 18 18 18)
    (quest (19 1 917 1) (8001 1 933 1)))

    ;¸¶±¸´Ï±º ö°©º¸º´
    (monster (name 18) (index 18) (country 0) (race 0) (level 27) (ai 2) (range 28) (sight 106 320) (exp 920) (itemgroup 24 2)
    (str 84) (hth 35) (int 8) (wis 8) (dex 21) (hp 36) (mp 70) (aspeed 1350) (hit 34) (dodge 31)
    (attack 0 105 107) (magic 0 0) (defense 37 37) (absorb 6) (mspeed 1600 800) (resist 17 17 19 19 19)
    (quest (20 1 919 1) (8001 1 933 1)))

    ;¸¶±¸´Ï±º ±¤Àü»ç
    (monster (name 19) (index 19) (country 0) (race 0) (level 29) (ai 2) (range 28) (sight 160 320) (exp 1050) (itemgroup 26 2)
    (str 88) (hth 38) (int 8) (wis 8) (dex 30) (hp 33) (mp 70) (aspeed 1200) (hit 35) (dodge 37)
    (attack 0 118 120) (magic 0 0) (defense 39 39) (absorb 3) (mspeed 1600 800) (resist 18 18 20 20 20)
    (quest (8001 1 933 1)))

    ;¸¶±¸´Ï±º ¼öÀå
    (monster (name 20) (index 20) (country 0) (race 0) (level 34) (ai 2) (range 28) (sight 160 320) (exp 1330) (itemgroup 27 2)
    (str 94) (hth 50) (int 12) (wis 9) (dex 36) (hp 540) (mp 70) (aspeed 1400) (hit 49) (dodge 44)
    (attack 0 225 225) (magic 0 0) (defense 70 70) (absorb 12) (mspeed 1600 800) (resist 41 41 49 49 49)
    (quest (24 1 921 1) (9004 2 932 1) (8001 1 933 1)))

    ;¼ö¸¶·æ
    (monster (name 21) (index 21) (country 0) (race 0) (level 24) (ai 1) (range 28) (sight 160 320) (exp 770) (itemgroup 21 2)
    (str 80) (hth 35) (int 4) (wis 6) (dex 24) (hp 1) (mp 70) (aspeed 1500) (hit 29) (dodge 25)
    (attack 0 78 79) (magic 0 0) (defense 34 34) (absorb 2) (mspeed 1600 800) (resist 15 15 17 17 17)
    (quest (8001 1 933 1)))

    ;±¾ÁÖ¸° ¼ö¸¶·æ
    (monster (name 22) (index 22) (country 0) (race 0) (level 26) (ai 2) (range 28) (sight 200 320) (exp 860) (itemgroup 23 2)
    (str 82) (hth 35) (int 3) (wis 6) (dex 24) (hp 17) (mp 70) (aspeed 1500) (hit 32) (dodge 29)
    (attack 0 95 96) (magic 0 0) (defense 36 36) (absorb 2) (mspeed 1600 800) (resist 16 16 18 18 18)
    (quest (21 1 918 1) (8001 1 933 1)))

    ;¼ö¸¶·æ Æ÷½ÄÀÚ
    (monster (name 23) (index 23) (country 0) (race 0) (level 28) (ai 2) (range 28) (sight 160 320) (exp 990) (itemgroup 25 2)
    (str 86) (hth 37) (int 4) (wis 6) (dex 24) (hp 32) (mp 70) (aspeed 1500) (hit 37) (dodge 33)
    (attack 0 111 113) (magic 0 0) (defense 38 38) (absorb 6) (mspeed 1600 800) (resist 17 17 19 19 19)
    (quest (22 1 920 1) (8001 1 933 1)))

    ;¼ö¸¶·æ ¿ìµÎ¸Ó¸®
    (monster (name 24) (index 24) (country 0) (race 0) (level 37) (ai 2) (range 28) (sight 160 320) (exp 1670) (itemgroup 28 2)
    (str 101) (hth 58) (int 4) (wis 6) (dex 24) (hp 551) (mp 70) (aspeed 1500) (hit 52) (dodge 56)
    (attack 0 261 261) (magic 0 0) (defense 72 72) (absorb 0) (mspeed 1600 800) (resist 30 30 34 34 34)
    (quest (25 1 922 1) (8001 1 933 1)))

    ;°Å¼öÁ· ÁÖ¹Î
    (monster (name 25) (index 25) (country 0) (race 1) (level 14) (ai 1) (range 28) (sight 160 320) (exp 350) (itemgroup 11 2)
    (str 56) (hth 17) (int 16) (wis 12) (dex 12) (hp 20) (mp 70) (aspeed 2000) (hit 16) (dodge 10)
    (attack 0 41 41) (magic 0 0) (defense 16 16) (absorb 2) (mspeed 1600 800) (resist 7 7 9 9 9)
    (quest (6 4 907 1) (9002 4 934 1) (8001 1 933 1)))

    ;°Å¼öÁ· ³ë¿¹
    (monster (name 26) (index 26) (country 0) (race 1) (level 15) (ai 1) (range 28) (sight 160 320) (exp 380) (itemgroup 12 2)
    (str 60) (hth 19) (int 16) (wis 12) (dex 12) (hp 26) (mp 70) (aspeed 2000) (hit 18) (dodge 13)
    (attack 0 46 46) (magic 0 0) (defense 18 18) (absorb 2) (mspeed 1600 800) (resist 8 8 10 10 10)
    (quest (7 2 908 1) (9 2 908 1) (9002 4 934 1) (8001 1 933 1)))

    ;°Å¼öÁ· Ǫ¸¥Àü»ç
    (monster (name 27) (index 27) (country 0) (race 1) (level 17) (ai 2) (range 28) (sight 160 320) (exp 450) (itemgroup 14 2)
    (str 66) (hth 23) (int 16) (wis 12) (dex 12) (hp 11) (mp 70) (aspeed 1500) (hit 18) (dodge 16)
    (attack 0 54 54) (magic 0 0) (defense 21 21) (absorb 2) (mspeed 1600 800) (resist 10 10 11 11 11)
    (quest (11 2 910 1) (9003 1 931 1) (8001 1 933 1)))

    ;°Å¼öÁ· ºÓÀºÀü»ç
    (monster (name 28) (index 28) (country 0) (race 1) (level 18) (ai 2) (range 28) (sight 160 320) (exp 480) (itemgroup 15 2)
    (str 68) (hth 23) (int 16) (wis 12) (dex 12) (hp 20) (mp 70) (aspeed 1500) (hit 19) (dodge 17)
    (attack 0 57 57) (magic 0 0) (defense 22 22) (absorb 2) (mspeed 1600 800) (resist 10 10 11 11 11)
    (quest (12 1 911 1) (9003 1 931 1) (8001 1 933 1)))

    ;¹ö·ÁÁø ¾Æ±âÀÇ ¿øÈ¥
    (monster (name 29) (index 29) (country 0) (race 1) (level 30) (ai 2) (range 20) (sight 160 320) (exp 1090) (itemgroup 29 2)
    (str 90) (hth 40) (int 2) (wis 1) (dex 36) (hp 59) (mp 70) (aspeed 1400) (hit 42) (dodge 40)
    (attack 0 126 129) (magic 0 0) (defense 41 41) (absorb 0) (mspeed 1600 800) (resist 19 19 20 20 20)
    (quest (27 2 935 1) (9005 3 944 1) (8001 1 933 1)))

    ;ÃÑ°¢ÀÇ ¿øÈ¥
    (monster (name 30) (index 30) (country 0) (race 1) (level 31) (ai 2) (range 20) (sight 160 320) (exp 1200) (itemgroup 30 2)
    (str 91) (hth 42) (int 2) (wis 1) (dex 38) (hp 101) (mp 70) (aspeed 1400) (hit 44) (dodge 43)
    (attack 0 135 138) (magic 0 0) (defense 41 41) (absorb 0) (mspeed 1600 800) (resist 19 19 20 20 20)
    (quest (28 1 936 1) (9005 3 944 1) (8001 1 933 1)))

    ;ó³àÀÇ ¿øÈ¥
    (monster (name 31) (index 31) (country 0) (race 1) (level 32) (ai 2) (range 20) (sight 160 320) (exp 1310) (itemgroup 31 2)
    (str 92) (hth 44) (int 2) (wis 1) (dex 40) (hp 142) (mp 70) (aspeed 1400) (hit 45) (dodge 49)
    (attack 0 145 148) (magic 0 0) (defense 41 41) (absorb 0) (mspeed 1600 800) (resist 19 19 20 20 20)
    (quest (29 1 937 1) (9005 3 944 1) (8001 1 933 1)))

    ;´ëÀåÀåÀÌÀÇ ¿øÈ¥
    (monster (name 32) (index 32) (country 0) (race 1) (level 33) (ai 2) (range 20) (sight 160 320) (exp 1410) (itemgroup 32 2)
    (str 93) (hth 46) (int 2) (wis 1) (dex 42) (hp 148) (mp 70) (aspeed 1400) (hit 48) (dodge 52)
    (attack 0 155 158) (magic 0 0) (defense 41 41) (absorb 0) (mspeed 1600 800) (resist 19 19 20 20 20)
    (quest (30 1 938 1) (9005 3 944 1) (8001 1 933 1)))

    ;¼öºñº´ÀÇ ¿øÈ¥
    (monster (name 33) (index 33) (country 0) (race 1) (level 34) (ai 2) (range 20) (sight 160 320) (exp 1520) (itemgroup 33 2)
    (str 95) (hth 48) (int 2) (wis 1) (dex 43) (hp 220) (mp 70) (aspeed 1400) (hit 52) (dodge 55)
    (attack 0 165 168) (magic 0 0) (defense 41 41) (absorb 0) (mspeed 1600 800) (resist 19 19 20 20 20)
    (quest (31 1 939 1) (9005 3 944 1) (8001 1 933 1)))

    ;Àú½Â°¡´Â ±æµ¿¹«
    (monster (name 34) (index 34) (country 0) (race 1) (level 35) (ai 2) (range 20) (sight 160 320) (exp 1600) (itemgroup 34 2)
    (str 98) (hth 54) (int 2) (wis 1) (dex 44) (hp 161) (mp 70) (aspeed 1400) (hit 54) (dodge 51)
    (attack 0 175 178) (magic 0 0) (defense 41 41) (absorb 0) (mspeed 1600 800) (resist 19 19 20 20 20)
    (quest (32 1 940 1) (8001 1 933 1)))

    ;°á¹ÚµÈ ¿øÈ¥±º
    (monster (name 35) (index 35) (country 0) (race 1) (level 37) (ai 2) (range 20) (sight 160 320) (exp 2210) (itemgroup 35 2)
    (str 103) (hth 58) (int 2) (wis 1) (dex 48) (hp 693) (mp 70) (aspeed 1400) (hit 58) (dodge 52)
    (attack 0 192 196) (magic 0 0) (defense 50 50) (absorb 0) (mspeed 1600 800) (resist 19 19 20 20 20)
    (quest (33 1 941 1) (9005 3 944 1) (8001 1 933 1)))

  • Das mit der Textdatei hab ich zuspät gesehen, meine sieht so aus:

    Spoiler anzeigen

    jsdafkljsdökjföasdkjf
    asdklfjalksdjfiejkfjasjke
    asejfawioefjöawefawe
    (monster (name 1) (index 1) (country 0) (race 0) (level 1) (ai 1) (range 20) (sight 160 240) (exp 20) (itemgroup 1 2)
    (str 21) (hth 1) (int 10) (wis 10) (dex 2) (hp 1) (mp 70) (aspeed 2400) (hit 0) (dodge 0)
    (attack 0 7 7) (magic 0 0) (defense 0 0) (absorb 0) (mspeed 1600 800)
    (quest (2 1 901 1) (3 1 902 1) (54 1 1025 1) (8001 1 933 1)))

    jsdafkljsdökjföasdkjf
    asdklfjalksdjfiejkfjasjke
    asejfawioefjöawefawe

    Und hier mal der AutoIT Code zum ersetzen:

    Spoiler anzeigen
    [autoit]

    ; Brauch ich für das einlesen der Datei und das schreiben
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Brav alle Variablen deklarieren
    Local $filename = @ScriptDir & '\testdatei.txt' ; Name der Datei
    Local $meinarray ; Darin lege ich die Datei ab und ändere den Wert auf den neuen
    Local $newEXP = 52 ; Der neue Wert der in exp rein soll
    Local $nLfd ; einfach ein Variable zum zählen

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier wird die Datei eingelesen und in ein Array gepackt
    _FileReadToArray($filename,$meinarray)

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier prüfe ich jede Zeile im Array (von 1 bis maximal Index, der in Index 0 steht)
    ; ob er was ersetzen kann
    For $nLfd = 1 To $meinarray[0]
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],'\(exp (\d\d)\)','(exp ' & $newEXP & ')')
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; Da (falls gefunden) die Ersetzung im Array stattgefunden hat, muss ich
    ; das Array wieder in die Datei schreiben
    _FileWriteFromArray($filename,$meinarray,1,$meinarray[0])

    [/autoit] [autoit][/autoit] [autoit]

    ;FERITG
    Exit

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Hi das mit der Berechnung ist recht einfach, aber was ich komisch finde ist das er mir immer eine Leerzeile vorne weg schreibt, da vielleicht einer eine Idee, oder sollte man jeden Array-Eintrag per Hand weg schreiben?

    Berechnung von EXP und Leerzeile
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Brauch ich für das einlesen der Datei und das schreiben
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Brav alle Variablen deklarieren
    Local $filename = @ScriptDir & '\testdatei.txt' ; Name der Datei
    Local $meinarray ; Darin lege ich die Datei ab und ändere den Wert auf den neuen
    Local $newEXP ; Der neue Wert der in exp rein soll
    Local $nLfd ; einfach ein Variable zum zählen
    Local $alterWert ; Für den alten Wert
    Local $Multiplikator = 3 ; Mit was * genommen werden soll
    Local $arr ; Hilfs - Array

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier wird die Datei eingelesen und in ein Array gepackt
    _FileReadToArray($filename,$meinarray)

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier prüfe ich jede Zeile im Array (von 1 bis maximal Index, der in Index 0 steht)
    ; ob er was ersetzen kann
    For $nLfd = 1 To $meinarray[0]
    $arr = StringRegExp($meinarray[$nLfd],'\(exp (\d\d)\)',3)
    If Not @error AND IsArray($arr) Then
    $alterWert = $arr[0]
    $newEXP = $alterWert * $Multiplikator
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],'\(exp (\d\d)\)','(exp ' & $newEXP & ')')
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; Da (falls gefunden) die Ersetzung im Array stattgefunden hat, muss ich
    ; das Array wieder in die Datei schreiben
    _FileWriteFromArray($filename,$meinarray,1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;FERITG
    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Und so haut er mir immer eine leere Zeile hinten daran :

    Hinten eine leere Zeile
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Brauch ich für das einlesen der Datei und das schreiben
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Brav alle Variablen deklarieren
    Local $filename = @ScriptDir & '\testdatei.txt' ; Name der Datei
    Local $meinarray ; Darin lege ich die Datei ab und ändere den Wert auf den neuen
    Local $newEXP ; Der neue Wert der in exp rein soll
    Local $nLfd ; einfach ein Variable zum zählen
    Local $alterWert ; Für den alten Wert
    Local $Multiplikator = 3 ; Mit was * genommen werden soll
    Local $arr ; Hilfs - Array
    Local $hFile ; FileHandle

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hFile = FileOpen($filename,0) ; Datei zum lesen öffnen
    _FileReadToArray($filename,$meinarray) ; Hier wird die Datei eingelesen und in ein Array gepackt
    FileClose($hFile) ; Datei schliessen

    [/autoit] [autoit][/autoit] [autoit]

    ; Datei zum schreiben öffnen
    $hFile = FileOpen($filename,2)

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier prüfe ich jede Zeile im Array (von 1 bis maximal Index, der in Index 0 steht)
    ; ob er was ersetzen kann
    For $nLfd = 1 To $meinarray[0]
    $arr = StringRegExp($meinarray[$nLfd],'\(exp (\d\d)\)',3)
    If Not @error AND IsArray($arr) Then
    $alterWert = $arr[0]
    $newEXP = $alterWert * $Multiplikator
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],'\(exp (\d\d)\)','(exp ' & $newEXP & ')')
    EndIf
    FileWriteLine($hFile,$meinarray[$nLfd])
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; Datei schliessen
    FileClose($hFile)

    [/autoit] [autoit][/autoit] [autoit]

    ;FERITG
    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Bei 1 ist ein Bug in _FileWriteFromArray
    Bei 2 FileWriteLine schreibt $line & @CRLF
    du musst also
    FileWriteLine($hFile,$meinarray[$nLfd])
    ersetzen mit

    [autoit]

    If $$nLfd <> $meinarray[0] Then $meinarray[$nLfd] &= @CRLF
    FileWrite($hFile,$meinarray[$nLfd])

    [/autoit]
  • Ich habs schon immer gesagt, ich mag keine Käfer ;)

    So hier noch mal der Quelltext mit ersetzten FileWriteLine, auch wenn ich von der Logik nicht verstehe das einfach noch eine Zeile hinten dran kommt wenn ich im Mode 3 die Datei öffne.

    Spoiler anzeigen
    [autoit]


    ; Brauch ich für das einlesen der Datei und das schreiben
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Brav alle Variablen deklarieren
    Local $filename = @ScriptDir & '\testdatei.txt' ; Name der Datei
    Local $meinarray ; Darin lege ich die Datei ab und ändere den Wert auf den neuen
    Local $newEXP ; Der neue Wert der in exp rein soll
    Local $nLfd ; einfach ein Variable zum zählen
    Local $alterWert ; Für den alten Wert
    Local $Multiplikator = 3 ; Mit was * genommen werden soll
    Local $arr ; Hilfs - Array
    Local $hFile ; FileHandle

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hFile = FileOpen($filename,0) ; Datei zum lesen öffnen
    _FileReadToArray($filename,$meinarray) ; Hier wird die Datei eingelesen und in ein Array gepackt
    FileClose($hFile) ; Datei schliessen

    [/autoit] [autoit][/autoit] [autoit]

    ; Datei zum schreiben öffnen
    $hFile = FileOpen($filename,2)

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier prüfe ich jede Zeile im Array (von 1 bis maximal Index, der in Index 0 steht)
    ; ob er was ersetzen kann
    For $nLfd = 1 To $meinarray[0]
    $arr = StringRegExp($meinarray[$nLfd],'\(exp (\d\d)\)',3)
    If Not @error AND IsArray($arr) Then
    $alterWert = $arr[0]
    $newEXP = $alterWert * $Multiplikator
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],'\(exp (\d\d)\)','(exp ' & $newEXP & ')')
    EndIf
    If $nLfd <> $meinarray[0] Then $meinarray[$nLfd] &= @CRLF
    FileWrite($hFile,$meinarray[$nLfd])
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; Datei schliessen
    FileClose($hFile)

    [/autoit] [autoit][/autoit] [autoit]

    ;FERITG
    Exit

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

    Einmal editiert, zuletzt von McPoldy (6. März 2008 um 07:58)

  • Danke an Alle Helfer Dank euch läuft jetzt nicht nur derSkrippt sondern ich habe jetzt auch einiges dazugelernt was ich in Zukunft Nutzen kann danke
    Falls es einer braucht das fertige Script

    P.s. musste es anhängen da der source code zu lang ist

  • Xenobiologist
    was meinste damit genau ? ich brauche so viele funktionen weill es nicht nur 2stellige (exp 20)
    sondern auch 3stellige (exp 300)
    und nochmehr stellige gibt daher brauche ich so viele funktionen damit eben alle stellen verrechnet werden^^


    so noch eine frage

    diese stelle $newEXP = $alterWert * $Multiplikator
    sorgt ja dafür das der wert $newEXP das ergebnis der rechnung von $alterWert mal den Multiplikator

    wie kanne ich das machen das er nicht mal nimmt sondern teilt ?
    weil wenn ich * durch / ersetze teilt er irgendwie schon aber bei 200 durch 10 kommt 0.2