hilfe bei xp

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

  • hilfe bei xp

    hy freunde

    also ich wollte ein xp level up system machen mit einer ini.

    also als erstes hab ich im rm_boot diesen code zb eingefügt:

    GML-Quellcode

    1. ini_open("experience.ini")
    2. global.xp="Player1";
    3. ini_write_real("Level1","Speedleft",-15)
    4. ini_write_real("Level1","Speedright",7)



    dann im player objekt im create event diesen code:

    GML-Quellcode

    1. global.Exp=0; // variable für die xp punkte
    2. ini_open("experience.ini")
    3. global.xp="Player1";
    4. links=ini_read_real("Level1","Speedleft",0)
    5. rechts=ini_read_real("Level1","Speedright",0)
    6. ini_close();



    dann im step event von player:

    GML-Quellcode

    1. if keyboard_check(global.key_left)
    2. {
    3. if (global.Exp <15)
    4. {
    5. hspeed=speedleft;
    6. }
    7. global.lastpressed="left";
    8. image_speed=0.3;
    9. sprite_index=spr_player_run_left;
    10. if (global.Exp >= 15)
    11. {
    12. hspeed=links;
    13. }
    14. }
    Alles anzeigen



    aber es funktioniert nicht....zwar werden die punkte hinzugefügt die ich im collision event mit enemy objekt gemacht habe aber der speed wird nicht verändert.....warum..
  • ne das ist kein fehler das gehört so


    aber der studio version von game maker muss man ne 0 dransetzen....sonst kommt ne fehlermeldung
    in früheren versionen kann man noch einfach "" machen

    ja einfach weil ich mehrere level ups machen will und es einfach gut mit ner ini finde....
    wie würdest du es machen????


    und weiß jemand was das problem ist??
  • in der ini besteht folgende gefahr:

    - der user findet die Ini und schreibt sich n speed von 100 unverwundbarkeit und Lev 100 rein (juhuu)

    ich würde es so machen das ich diese DInge per gml im code vor definiere durch das eigene Save und load System geht das ja alles nicht verloreni

    variable LV EXP SpeedL und SpeedR

    und dann ein control event das prüft wenn

    Hero LV startet mit 0

    wenn EXP >= x LV = 1

    wenn xp größer als X LV = 2

    dazu kann man abfragen wenn LV = 2 tu dies das und jenes

    das ganze dann mit dem internen save sichern und gut ist
  • acidrain833 schrieb:

    ich finde deine weiße total lästig und viel mehr aufwand....aber danke für nix.....

    helfen konntest du mir ja nicht


    erklär mir doch wo ne INI besser sein soll die tut genau das gleichedu musst das LV Abfragen, die EXP und das ganze immer hin und her transportieren - einfacher ist es mit nichten!oder verstehe ich die Arbeitsweise der INI falsch? du kannst froh sein das überhaupt jemand dein Problem analysiert und vor allem um diese Uhrzeit -ich hatte mal ein KI projekt da waren die inis permanent aos, ich hoffe nur du versuchst mit den inis kein Multiplayer game zu bauen!
  • nein kein muliplayer game...

    und ich mach ne ini wiel ich über 30 level ups mache in denen of doppelte werte sind usw.


    vielleicht kannst du mir ja dabei helfen:
    wie kann ich es machen das ich ein sprite fliegen lasse also wenn ich den enemy ausschalte soll das sprite erscheinen und dann nach oben fliegen und verschwinden.....
    also wie ich es erscheinen lasse ist schon klar aber wie mach ich das andere??
  • doppelte Werte? kann eigentlich nicht sein LV und XP müssen ja steigen und das geht auch hardcoded

    wie gesagt ich will dich von deiner INI nicht abbringen! - ne INI macht für mich nur sinn wenn man das als HTML5 ausgeben will
  • moin,

    ich bastel mir zum initialisienren immer nen kleines script mit allen benötigten werten, das schöne ist daß man dieses auch auf mehrere objekte verlinken kann. find ich persönlich besser als ne externe datei.
    nehmen wir ma an dein obj_enemy geht mit hp=0 d.h. es zerstört sich könntest du einfach im destroy event ein obj_zahl createn welches langsam nach oben fliegt. wenn du es ausfaden lassen willst dann einfach per step etwas alfa wegnehmen bis alfa<=0 ist und dann einfach das obj_zahl zerstören sobald alfa <=0 ist.
    alternativ wenn die zahl nicht ausfaden soll dann einfach nen timer machen der das obj_zahl zerstört.
  • du ich hab wieder ne frage also ich habs jetzt so gemacht wenn man einen gegener tötet bekommt man EXP

    obj__player
    CREATE EVENT

    GML-Quellcode

    1. global.Exp=0;
    2. if (global.levelup=0)
    3. {
    4. if (global.lastpressed=="right")
    5. {
    6. hspeed=-7
    7. }
    8. else
    9. [
    10. hspeed=7
    11. }
    12. }
    13. if (global.levelup=1)
    14. {
    15. if (global.lastpressed=="right")
    16. {
    17. hspeed=-8
    18. }
    19. else
    20. [
    21. hspeed=7
    22. }
    23. }
    Alles anzeigen



    Obj_player
    Step Event

    GML-Quellcode

    1. if keyboard_check(global.key_left)
    2. {
    3. if (global.Exp <15)
    4. {
    5. global.levelup=0;
    6. }
    7. global.lastpressed="left";
    8. image_speed=0.3;
    9. sprite_index=spr_player_run_left;
    10. if (global.Exp >= 15)
    11. {
    12. global.levelup=1;
    13. }
    14. }
    15. if keyboard_check(global.key_right)
    16. {
    17. if (global.Exp <15)
    18. {
    19. global.levelup=0;
    20. }
    21. global.lastpressed="right";
    22. image_speed=0.3;
    23. sprite_index=spr_player_run_left;
    24. if (global.Exp >= 15)
    25. {
    26. global.levelup=1;
    27. }
    28. }
    Alles anzeigen




    Das problem ist das er charakter sich nicht mehr bewegt also er läuft auf der stelle.....wie würdest du es machen
  • zuerst mal würde ich die variable levelup und lastpressed ganz oben im create als global deklarieren dann muss man nicht immer global davor schreiben das sieht dann so aus:

    globalvar lastpressed
    lastpressed = 0;

    dann hat mans ein mal gemacht und kann von überall aus lastpressed abfangen


    und denk daran das im create event alles nur ein mal abläuft nämlich wenn dein spieler erschaffen wird,

    wie ich sehe willst du ja bloß n simples LV System

    da wäre ein control event das kannst du levler nennen und plazierst es in jedem raum

    das wiederum hat eine globale variable bzw mehrere

    globalvar
    playerlevel = 0
    EXP = 0
    movment
    ATK
    DEF


    jedes mal wenn der player was macht gibste ihm X EXP also EXP +=100 z.B

    in den leveler kannst du nun im step ne IF Bedingung machen

    wenn EXP == X dann
    {
    DEF ATK MOVMENT + = X ( x ist irgend ne Zahl) player level ++ exp ++
    ]
    els wenn EXP == X
    [
    dann wieder movement + atk + lv ++ exp+1

    usw

    da movment global ist ( kannst ja movment L und R nehmen kannst du diese variablen vom Player aus ansteuern und n ganz normales lauf event machen bei dem du dann als speed variable ebven movement L und R oder nur movement nimmst, so kümmert sich der levler um alles dein char nimmt immer nur die neuen levelwerte an EXP geben wir deshalb ne plus 1 damit er nicht permanent wenn du HP hast neue hps bekommt


    so wäre das in meinen gedanken mal aufgebaut


    Ich baue immer ein schematisches Muster und setze es dann codetechnisch um