Ergebnis 1 bis 12 von 12

Thema: Vari:Problemme

  1. #1

    Vari:Problemme

    Hallo leute ich habe ein Prob. mit Variable

    Also ich habe mir in internet ein charset mit Zahle
    geholt

    und wollte damit ein EXP menü system machen
    doch immer wenn ich Vari EXP Unkte + 1 gebe bleib er bei 9 stehe und schalte nicht weiter auf der zehner reihe und sest die einer reihe auf null wieder

    ich würde mich um eure hilfe sehr freuen ich melde mich heute arbend wieder dann erkläre ich was mein Prob genau ist

  2. #2
    Ja ein bisschen genauer wäre besser. So kann ich jetzt mal nur leicht erahnen, was dein Problem ist.

    Ich nehme jetzt mal an, du hast eine EXP-Leiste die einen Wert bis 999 erlaubt (jetzt nur als Beispiel) und willst, dass dieser Zahlenwert durch Aufzählen der entsprechenden Variable sich sichtbar durch die Zahlen-Pics ändert, richtig?
    Ich kann dir nicht sagen wo dein Fehler liegt, aber wie ich es machen würde:

    Da du für die Anzeige der EXP-Variable ja nicht 999 verschiedene Bilder und 999 verschiedene conditions möchtest (nehme ich zumindest stark an), muss die Variable in Hunderter, Zehner und Einer gesplittet werden. Dazu überprüft du zuerst ob es Hunderter und Zehner gibt, Einer gibts immer (und wenns nur 0 ist).
    Ich mach das alles mal nur in Pseudo-Code:

    EXP-Vari(Einer) == EXP-Vari
    if EXP-Vari >= 10 then EXP-Vari(Zehner) == EXP-Vari
    if EXP-Vari >= 100 then EXP-Vari(Hunderter) == EXP-Vari

    Nun sind das natürlich noch keine wirklichen Hunderter, Zehner und Einer, deshalb brauchen wir hier den "Mod-befehl".

    EXP-Vari(Hunderter) lassen wir so, hier brauchen wir kein Mod, da reichen Abfragen (siehe unten)

    EXP-Vari(Zehner) Mod 100
    EXP-Vari(Einer) Mod 10

    Haben wir das gemacht, sollten wir nun die richtigen Werte für die Anzeige haben. Nun gilt es, das richtige Zahl-Pic für die richtige Stelle anzeigen zu lassen, deshalb wieder Pseudo-Code:

    für Hunderterstelle:
    if EXP-Vari >= 100 then
    if EXP-Vari(Hunderter) >= 900 then "Zahl 9 anzeigen"
    else
    if EXP-Vari(Hunderter) >= 800 then "Zahl 8 anzeigen"
    else
    if.... 700 - 200
    else
    "Zahl 1 anzeigen"
    else
    "lösche Zahl für Hunderterstelle"

    für Zehnerstelle:
    if EXP-Vari >= 10
    if EXP-Vari(Zehner) >= 90 then "Zahl 9 anzeigen"
    else
    if EXP-Vari(Zehner) >= 80 then "Zahl 8 anzeigen"
    else
    if... 70-20
    else
    "Zahl 1 anzeigen"
    else
    if EXP-Vari(Hunderter) > 0 then "Zahl 0 anzeigen"
    else
    "lösche Zahl für Zehnerstelle"

    für Einerstelle:
    if EXP-Vari(Einer) = 9 then "Zahl 9 anzeigen"
    else
    if... 8-1
    else
    "Zahl 0 anzeigen"


    Die ganze Prozedur natürlich in einem Call-Event, was bei Änderung der EXP-Vari erneut aufgerufen wird et voilá -> Ziel erfüllt

    Ich hoffe du kannst jetzt auch was damit anfangen

  3. #3
    Fast genau ge troffen.

    nur kann ich das was du mir versuchst zu erklären nicht nach machen da ich das nicht genau verstehe

    was ich wo rein machen muss und da ich nicht mit pixel sondern mit charset arbeite weist ich jetzt nicht gnau was ich machen muss oder soll

    hier die bilder die ich hochladen wollte

    charset



    So habe ich das z.b wenn exp+1 dann dann soll null auf eins umschalten







    Bei Level Steht ja 3 hat nixs zu bedeuten da ich an testen wahr

    würde mich sehr über ein kleine game tut sehr freuen als dank kommt er/sie in cri + in Spiel vor.

  4. #4
    Wenn die Trigger-condition auf "Action-key" steht, callst du dann auch das Event beim Ändern der Vari? oO
    Ansonsten tu das and you will be surprised.

  5. #5
    So wie du es jetzt hast sieht es schon ganz richtig aus. Es ist jetzt die Frage was auf seite 3-10 ist. Denn wenn mehrere Seiten die Anforderung erfüllen das sie Angezeigt werden sollen wird immer die angezeigt die die höhere Seitenzahl hat. Wenn du also auf einer der anderen Seiten eine hast, die angezeigt wird und die Grafik "0" dann kann sich garnichts ändern, weil immer diese Seite aktiv ist.

  6. #6
    ich nehme mal an, dass dein Problem darin liegt dass die 10er 100er etc. nicht richtig erfasst werden.

    Wenn ich dort richtig liege könntest du dein Problem mit einem Common-Event lösen welches die gesamt Exp-Zahl in dezimalwerte einteilt.

    Dieses würde wie folgt aussehen (ich nehme mal an dass max exp z.b. 999 wäre, ist aber einfach erweiterbar):

    [V]exp(S) = V[exp] (1)

    Label1

    Fork [V]exp(S)>=100 (2)

    yes| V[100er]+1 [V]exp(S)-100 Jump to Label 1

    no|Label2 Fork exp(S)>=10 (3)

    yes| V[10er]+1 [V]exp(S)-10 Jump to Label 2

    no|Label3 Fork exp(S)>=1

    yes| V[1er]+1 [V]exp(S)-1 Jump to Label 3



    (1) : Hier werden deine exp in einer anderen Variable (hier exp(S) genannt) gespeichert, damit wir die wirkliche exp-Zahl nicht verändern.

    (2): Jetzt wird überprüft ob gleich oder mehr als 100 exp vorhanden sind wenn ja werden die exp um 100 reduziert und der 100er-Wert um 1 erhöht.
    Dieses wiederholt sich jetzt so oft bis keine 100er mehr vorhanden sind (dank den Labels)

    (3): Sobald jetzt keine 100er mehr vorhanden sind, beginnt das gleiche Spiel mit den 10ern, und dann mit den 1ern.

    Wenn du die Zahl dann anzeigen willst, nimmst du einfach für die erste Zahl ( die hunderter) die 100er Variable für die zweite die 10er und für die dritte die 1er.

    Mfg

  7. #7
    Irgendwelche Schleifen sind für so eine Anzeige völlig unnötig. Und zudem ist die Lösung auch viel zu rechenintensiv.
    Elsen hat schon das richtige Prinzip erklären wollen. Vielleicht hilft dir die Erklärung des Prinzips weiter:

    Zitat Zitat von Makenshi
    Ich versuch dir mal das Modulokonzept zu erklären:

    Modulo ist ein Operator. Genauso wie Plus,Minus,Mal und Geteilt.

    Du hast nun folgende HP-Zahl: 1234

    Wir müssen sie nun in ihre Einzelteile zerlegen damit sie besser darstellbar wird.
    Hierfür benutzen wir den Modulo-Operator und die Division.
    Hierbei sei noch gesagt das Makervariablen nur ganze Zahlen abspeichern können. Sprich Zahlen ohne ein Komma. (Bsp.: 4 ) Geht nicht: (4,43)
    Wenn also eine Kommazahl bei einer Rechnung rauskommt, dann schneidet der Maker die Stellen nach dem Komma einfach ab. Das benutzen wir für die folgenden Rechnungen.
    1000er Stelle:
    1234 / 1000 = 1

    100er Stelle:
    1234 / 100 = 12
    12 MOD 10 = 2

    10er Stelle:
    1234 MOD 100 = 34
    34 / 10 = 3

    1er Stelle:
    1234 MOD 10 = 4


    Wie du siehst haben wir so die 4 stellige Zahl in ihre Einzelstellen aufgeteilt.
    Der Modularoperator rechnet übrigens den Rest einer Division aus. Sprich das was nach dem Komma kommt.
    Also:

    12 MOD 10 = 2
    12 / 10 = 1,2


    Du musst also die Zahl nur in ihre 4 Stellen zerlegen. Diese 4 Stellen kannst du dann in 4 einzelne Variablen abspeichern. Und den Inhalt dieser 4 einzelnen Variablen kannst du dann per Charaset oder Picture in Form von Zahlen anzeigen lassen.
    Wenn du Fragen hast , weil du etwas nicht verstehst dann sage am besten was du nicht verstehst. Sonst kann man schlecht helfen.

  8. #8
    rechenintensiv? naja... vllt wenn mans dauerhaft als parallel laufen lässt, aber wenn man es nur called wenn man das menü aufruft (falls exp nur im menü anzusehen sind, dann muss zwischendurch ja nicht nachberechnet werden)
    wäre das kein Problem.

    Und falls die exp an mehreren Stellen außerhalb des Menüs gezeigt wird, reicht auch ein 0,5 wait hinter dem script (und dann ein neues goto Label zum Anfang).

    Mfg

  9. #9
    Zitat Zitat von Siccles Beitrag anzeigen
    rechenintensiv? naja... vllt wenn mans dauerhaft als parallel laufen lässt, aber wenn man es nur called wenn man das menü aufruft (falls exp nur im menü anzusehen sind, dann muss zwischendurch ja nicht nachberechnet werden)
    wäre das kein Problem.

    Und falls die exp an mehreren Stellen außerhalb des Menüs gezeigt wird, reicht auch ein 0,5 wait hinter dem script (und dann ein neues goto Label zum Anfang).

    Mfg
    Du kennst immerhin das Endergebnis schon. Warum also etwas solange durchiterieren lassen bis du an deinem Fixpunkt bist?
    Zumal es einen Unterschied macht ob du eine Schleife mit minimal x Durchläufen hast oder eine Rechnung die jedes Mal gleich aufwändig ist. Call hin oder her.

  10. #10
    Ähm... Leute.
    Warum sollte man hier modulo verwenden oder die Zahl aufteilen? Und warum sollte man die Actionkey events callen?
    Man kann doch einfach bei der 2. Stelle "EXP>10; EXP>20;" statt "EXP=1; EXP=2" als Startbedingung einstellen, modulo ist also hier also unnötig.
    Außerdem muss man die Events auch nicht callen, da automatisch jedes Event die richtige Seite anzeigt, was laut Threadersteller ja auch für die 1. Stelle funktioniert.
    Oder überseh ich da jetzt was?

    Edit: Argh, Denkfehler! >_<

    Geändert von dasDull (14.11.2009 um 12:14 Uhr)

  11. #11
    yup du übersiehst was wenn die exp dann 10 wäre, würde in der 10er reihe ja "1" angezeigt werden, aber die 1er Reihe spielt dann verrückt.

    Denn die erste Reihe geht davon aus dass die exp nur einen Wert von 1-9 hat.

  12. #12
    Achja, stimmt. Sorry, ich war wohl noch nicht ganz wach.
    Dann habt ihr natürlich recht...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •