probleme mit script

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • probleme mit script

    heyho arbeite gerade an einem script das meinen gegnern zufällige eigenschaften zuweist

    Spoiler anzeigen

    GML-Quellcode

    1. if count = 0
    2. {
    3. //gegnerleben -----------------------------------------------
    4. zahl = round(random(11));
    5. ini_open("enemy.ini")
    6. if zahl <= 2
    7. {
    8. geg_life = ini_read_real("life","tank",0)
    9. geg_anzahl -= 3
    10. geg_speed = geg_speed/1.5
    11. }
    12. if zahl <= 3 && zahl >= 8
    13. {
    14. geg_life = ini_read_real("life","normal",0)
    15. geg_anzahl +=0
    16. geg_speed = geg_speed
    17. }
    18. if zahl >= 9
    19. {
    20. geg_life = ini_read_real("life","light",0)
    21. geg_anzahl += 5
    22. geg_speed = geg_speed*1.5
    23. }
    24. leben = round(leben*geg_life*(stufe*0.5))
    25. //---------------------------------------------------------------
    26. //Armor----------------------------------------------------------
    27. zahl = round(random(11));
    28. if zahl <= 5
    29. {
    30. geg_armor = ini_read_real("armor","normal",0)
    31. geg_anzahl += 2
    32. }
    33. if zahl <= 6 && zahl >= 7
    34. {
    35. geg_armor = ini_read_real("armor","ressist",0)
    36. geg_anzahl -= 2
    37. }
    38. if zahl = 8
    39. {
    40. geg_armor = ini_read_real("armor","phyressist",0)
    41. geg_anzahl -= 5
    42. }
    43. if zahl >= 9
    44. {
    45. geg_armor = ini_read_real("armor","leicht",0)
    46. geg_anzahl += 3
    47. }
    48. //----------------------------------------------------------------
    49. //Grafik----------------------------------------------------------
    50. zahl = round(random(2))
    51. if zahl = 1 geg_grafik = 'sp_mondwagen'
    52. ini_close()
    53. //----------------------------------------------------------------
    54. //Ergebnisse auswerten in enemylist-------------------------------
    55. ini_open("enemylist.ini")
    56. ini_write_real(string(stufe),"typ",1) //typ
    57. ini_write_real(string(stufe),"leben",string(leben)) //leben
    58. ini_write_real(string(stufe),"armor",string(geg_armor)) //rüstung
    59. ini_write_string(string(stufe),"grafik",string(geg_grafik))//grafik
    60. ini_write_real(string(stufe),"anzahl",string(geg_anzahl)) //anzahl
    61. ini_write_real(string(stufe),"speed",string(geg_speed)) //speed
    62. ini_close()
    63. count = 1
    64. }
    Alles anzeigen


    zur erklärung:
    ich definiere verschiedene eigenschaften: -Typ des gegners
    -Leben
    -rüsturng
    -grafik
    -speed
    -anzahl creeps pro welle

    ich brauch das für meine tower defence um variable gegnerwellen zu schaffen

    wenn ich die 4 werte habe möcht ich sie in meine ini speichern
    und genau da liegt mein problem, ich hab damit noch nicht viele erfahrungen gemacht und ich bekomme immer nur 0 werte, außer bei denen die ich zur zeit noch fest vorgebe (typ und grafik)

    ini aus der ich die werte auslese
    Spoiler anzeigen

    SQL-Abfrage

    1. [typ]
    2. boden=1
    3. luft=2
    4. wasser=3
    5. [life]
    6. tank=1.75
    7. normal=1
    8. light=0.6
    9. [armor]
    10. normal=1
    11. ressist=1.4
    12. phyressist=1.8
    13. leicht=0.5
    Alles anzeigen


    das ergebnis der ini
    Spoiler anzeigen

    SQL-Abfrage

    1. [1]
    2. typ=1
    3. leben=0
    4. armor=0
    5. grafik=0
    6. anzahl=0
    7. speed=0


    ich weiß das ich mir hier einiges sparen kann aber ich will erst mal probieren.

    weiß jemand warum ich zu keinen ergebnissen komme
    noch ein paar fragen die sich jetzt ergeben haben :

    was ist der unterscheid zwischen ' und " ?
    gibt random(x) kommastellen aus ?
    wie schreib ich kommazahlen in einer ini mit . oder , ?
    mache ich mit round(x) ganze zahlen? also auf welche stelle rundet die funktion?

    tut mir leid wenns so viel ist aber ich glaube mein fehler liegt irgendwo in meinen fragen^^
    danke schon mal im vorraus
    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Grey
  • Zu den Problem:
    Ich schätze stark es liegt daran, das du die Werte mit ini_write_real speichern willst, aber am ende alle Werte (mittels string()) in Text umwandelst => Das Ergebnis ist 0.
    Versuch also, wenn du schon ini_write_real benutzt, auch Zahlen zu speichern, nicht strings ;).

    Zu den unteren Fragen:
    Zwischen ' und " gibt es afaik im GM keinen Unterschied. In anderen Programmiersprachen ist dies aber der Fall (C++ dort wird ' für Chars, " für Strings benutzt. Oder Delphi: Dort wird nur ' benutzt und kein "). Der GM interpretiert beides aber gleichwertig (Wobei natürlich das Anfangs- und Endzeichen immer das gleiche sein muss! Man kann kein String mit " beginnen und mit ' beenden).
    Und ja, random(x) gibt auch Kommazahlen aus. irandom() gibt integer (Ganzzahlen/keine Kommazahlen) aus, und irandom_range(x,y) gibt nur ganze Zahlen (einschließlich x und y) zwischen x und y aus.
    Kammazahlen werden mit . in eine Ini geschrieben (der GM ist kein Deutsches Produkt, und verwendet daher die Englische, internationale Schreibweise mit den Dezimalpunkt)
    round(x) rundet von 0-4 ab, von 5-9 auf. floor(x) rundet IMMER ab. ceil(x) rundet IMMER auf.

    Mfg.,
    Mokuyobi
    木曜日 (Mokuyōbi)
  • Benutzer online 1

    1 Besucher