Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 29

Thema: Item und Techniken menü hilfe

  1. #1

    Users Awaiting Email Confirmation

    Item und Techniken menü hilfe

    Achtung,N00b Alert^^"

    Ich bin gerade bei meinem KS dabei,die Item- und Techniken Menüs zu bearbeiten.

    Da bräuchte ich Hilfe.

    Ich weiss nicht so recht,wie ich da anfangen soll.
    Die "If Hero posses Heiltrank"
    Show Picture 10 "Heiltrank"" - Variante ist für den Spieler sicherlich umständlich,weil die Liste nicht nachchrückt und ich kann auch nicht anzeigemwieviele Items ich davon noch habe.

    Das Fähigkeitenmenü ist dann noch ne ecke umständlicher.
    Zum einen habe ich Kategorien "Einface Techniken","Magie","Doppel-Techs","Dreifach-Techs" und dann kann noch in den Kategorien geblättert werden.

    Könnte mir da jemand ienen Ansatz geben,wie so ein Fähigkeiten/Itemmenü aufgebaut ist,deren Liste "aufrückt",wenn ein Item nicht im Besiitz ist?

  2. #2
    Du brauchst erstmal soviele Variablen wie Items du benutzen möchtest.
    Für die Items gibs du jeden eine Nummer wie (Heiltrank+10HP=1; Heiltrank+50HP=2; Magietrank=3; etc)
    Dann fragst du für jedes Item ab (z.B.wenn Item Heiltrank+10HP > 0):

    If item01==0 then Item01=1;
    else
    If item02==0 then Item02=1;
    usw.

    Dann die Anzahl abfragen:
    Variabele_Count_Heiltrank+10HP = Item(Heiltrank+10HP=Owned.NO)
    Variabele_Count_Heiltrank+50HP = Item(Heiltrank+50HP=Owned.NO)
    usw.

    Das gleiche geht auch ähnlich mit Skillsystem, nur einfacher.
    Hoffe, dass das dir hilft.

    Grüße

    netwarrior

  3. #3
    Was? Für jedes Item eine Variable?
    Das ist wirklich absolute Verschwendung^^

    Stell dir einfach einen Ordner vor, bei dem die Items immer ranrücken.
    Erklären will ich das jetzt nicht, aber schau bei PMOS rein, dort habe ich das so gemacht.
    (Übrigends nach der Vorlage von einer Idee von Lachs, aus Tara's Adventure)

  4. #4
    @netwarrior: Geht das wirklich zum Auflisten der Items? õ.o
    da muss doch wesentlich mehr gemacht werden.
    Alleine für ein Item in einer Liste mit 4 Itemauswahlen:

    Variable Oper: [0001: Item Ordnerstelle] set 1 (Oberste Stelle in Itemliste)
    Branch: if [Item 1] in Inventory
    Branch: if Variable [0001: Item Ordnerstelle] is 1
    Show Picture: (Item 1 Icon + Name) an Erste Stelle in Itemliste
    Variable Oper: [0002: Item1 ID] set 1 ( 1 für Item 1)
    Else
    Branch: if Variable [0001: Item Ordnerstelle] is 2
    Show Picture: (Item 2 Icon + Name) an Zweiter Stelle in Itemliste
    Variable Oper: [0003: Item2 ID] set 1 ( 1 für Item 1)
    ...
    Variable Oper: [0001: Item Ordnerstelle] + 1

    usw...
    Dann ist das nächste Item an der Reihe.
    Das ist aber bisher nur für die Itemanzeige, für die Itemanzahl nimmst du am besten ein Call Event.
    Die "Item ID" Variabel ist dafür da, damit bei der Auswahl und verwendung erkannt wird, welches Item benutzt wird.

    Ist das jetzt zu umständlich...? õ.o
    Ich weiss ja nicht wie das bei anderen Spielen so ist.

  5. #5
    Na, das geht viel einfacher:

    Zitat Zitat von EasyEventExporter
    - SCRIPT -
    <> Comment: MAX ITEMS MUSS VORHER GESETZT WERDEN
    : ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    : Ach ja und das mit der ID läuft so:
    :
    : 00 00 00
    : | \_> Itemanzahl
    : |____> ID
    : ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    <> Change Switch: [135] = OFF
    <> Change Variable: [594] = V[595]
    <> Change Variable: [597-600] = 0
    <> Change Variable: [581] = 0
    <> Change Variable: [108] = 51
    <> Change Variable: [105] = 64
    <> Change Variable: [106] = 72
    <> Change Variable: [591] = 1
    <> Label: 1
    <> Change Variable: [581] += 1
    <> Call Event: Common Event #296
    <> Fork Condition: If Variable [594] >= 5 then ...
    . <> Change Switch: [135] = ON
    . <> Jump To Label: 2
    . <>
    : End of fork
    <> Fork Condition: If Variable [582] >= 1 then ...
    . <> Fork Condition: If Variable [594] >= 1 then ...
    . . <> Change Variable: [593] = 596
    . . <> Change Variable: [593] += V[594]
    . . <> Change Variable: [V[593]] = V[581]
    . . <> Change Variable: [V[593]] *= 100
    . . <> Change Variable: [V[593]] += V[582]
    . . <> Call Event: Common Event #297
    . . <> Change Variable: [108] += 1
    . . <> Change Variable: [106] += 16
    . . <>
    . : End of fork
    . <> Change Variable: [594] += 1
    . <> Change Variable: [582] = 0
    . <>
    : End of fork
    <> Fork Condition: If Variable [591] >= 19 then ...
    . <>
    : Else ...
    . <> Change Variable: [591] += 1
    . <> Jump To Label: 1
    . <>
    : End of fork
    <> Fork Condition: If Variable [600] < 1900 then ...
    . <> Change Switch: [135] = ON
    . <>
    : End of fork
    <> Label: 2
    Ich poste das mal einfach so rein. So hab ich das in Mr. Hat II gemacht.
    Wenn als die erstne 4 Items angezeigt werden und nach rechts gedrückt wird, wird solange die ID + 1 gerechnet bis sie = 1 ist, asl bei 4 auf einer Seite müsste ich -4 rechnen
    Ich weiß, ich kann sowas nicht erklären xD

    Edit:
    das hier ist btw mit PicPointer-Patch

    Edit²:
    kurz gesagt it's magic

  6. #6
    Das sagt nicht viel aus, aber nur, weil du nicht die Benennungen für die Variablen dazugeschrieben hast. Ich kapier halt nicht, wozu diese Variablen da sind o.o
    Wie es aussieht kennst du eine einfache Lösung für die Itemseiten, denn auf meine Art gibts immer Makken xD
    Gut, ich schau mal bei Taras Adventure rein.

  7. #7
    Ließt es sich halt wie Assembler

    der EasyEventExporter nimmt halt nur die ID's, schreib doch die ID's in Namen um

  8. #8

    Users Awaiting Email Confirmation

    Zitat Zitat
    Stell dir einfach einen Ordner vor, bei dem die Items immer ranrücken.
    ich kanns mir aber iwie nicht vorstellen

    Zitat Zitat
    Erklären will ich das jetzt nicht, aber schau bei PMOS rein, dort habe ich das so gemacht.
    öhm,lustig. du sagtest bereits,dass es keinen Download mehr gibt

    Zitat Zitat
    (Übrigends nach der Vorlage von einer Idee von Lachs, aus Tara's Adventure)
    du meinst sicher das hier?


    für dich sieht das ganze sicherlich total einfach aus.
    Für mich aber siehts aus wie ein wirres durcheinander
    z.b. verstehe ich nicht,wofür die ersten 4 Variablen Operationen sind - ich bin solchen komplexen Aufgaben nicht gewohnt,weil ich noch nie Erfahrung mit sowas gemacht habe.
    Naja,ein gewisses Muster kann ich erkennen.

    Geändert von Engel der Furcht (12.04.2010 um 06:05 Uhr)

  9. #9
    Ich habe das so gelöst, als Item-Menü im KS wo 5 Items gleichzeitig angezeigt werden :


    Pseudo-Code --- die Operator- und Vergleich-Zeichen sollten sich selber erklären. 8)
    Code:
    <> var ItemVar1 bis letzte_ItemVar = 0
    
    <> if itemNr1 has it
     <> var ItemVar1 = 1
    :ELSE
     <> if itemNr2 has it
      <> var ItemVar1 = 2
     :ELSE ... bis zu den Anzahl der Items
    :END
    
    <> if itemNr2 has it
     <> if var ItemVar1 != 2
      <> var ItemVar2 = 2
    :ELSE 
     <> if itemNr3 has it
      <> if var ItemVar1 != 3
       <> var ItemVar2 = 3 ... bis zu den Anzahl der Items
        ... viele :END
    :END
    
    ... es kommt pro ItemVar eine Fork-Abfrage mehr dazu bis ...
    
    <> if letztesItem has it
     <> if var ItemVar1 != letzte_ItemID
      ... weitere Fork-Abfragen (jetzt nicht eingerückt) ...
       <> if var letzte_ItemVar-1 != letzte_ItemID
        <> var letzte_ItemVar = letzte_ItemID
        ... viele :END
    :END
    
    Sortier-Algorithmus mit Zeigern --- alle "0" = "Item nicht da" nach hinten sortieren
    
    <> var Var_Zeiger1 = Nummer[erste_ItemVar]
    <> cycle :
    <> if Var_Zeiger1 < Nummer[letzte_ItemVar]
     <> var Zeiger1_Wert = var[Var_Zeiger1]
     <> if Zeiger1_Wert == 0
      <> var Var_Zeiger2 = Var_Zeiger1
      <> var Var_Zeiger2 += 1
       <> cycle :
        <> var Zeiger2_Wert = var[Var_Zeiger2]
        <> if Zeiger2_Wert > 0
         <> var[Var_Zeiger1] = var[Var_Zeiger2]
         <> var[Var_Zeiger2] = 0
         <> break cycle
         <>
        :ELSE
         <> if Var_Zeiger2 > Nummer[letzte_ItemVar]
          <> break cycle
          <>
         :ELSE
          <> var Var_Zeiger2 += 1
          <>
         :END
         <>
        :END
        <>
       :END cycle
       <>
      :END
      <> var Var_Zeiger1 += 1
      <>
     :ELSE
     <> break cycle
     <>
     :END
     <>
    :END cycle
    PS: "!=" heißt "nicht gleich".

  10. #10
    Na ok, da ich grad Zeit hab werde ich mal versuchen das zu erklären.

    Dabei ziele ich auf MEINE Variante ab! Das heißt, du brauchst den PicPointer-Patch.

    Weiterhin gehe ich von 4 Items pro Seite aus (Das ist nicht so wichtig, wie man später sehen wird, aber für Beispiele nehme ich 4).
    Ich werde es auch einige Pointer raus lassen die ich benutze, damit es verständlicher wird.
    _________________________________________________________________________________

    Zunächst mal wollen wir uns das vorstellen. Wir wollen also das Items mit einer höheren ID ran rücken, falls "ZwischeiItem" fehlt?

    Offenbar ist es also so, das irgendwo abgefragt werden muss wie viel du von einem Item noch hast.
    Außerdem scheint es, als wenn sich der Rhythmus merkt wenn du ein Item "überspringst".

    Dazu benötigen wir nun erstmal 7 Variablen + 2 Variablen für die Position des Bilder + 4 ID Varis in denen wir die ID des Items speichern (Und die Anzahl!) + einen Switch, der sich merken wird ob man blättern kann!
    • Vari 1: ORDNER Startpunkt
    • Vari 2: ORDNER Items Sichtbar
    • Vari 3: ORDNER PIC ID
    • Vari 4: ORDNER Zähler
    • Vari 5: ORDNER Abbruch
    • Vari 6: ORDNER Content
    • Vari 7: ORDNER TEMP
    • Vari 8: ORDNER X-POS
    • Vari 9: ORDNER Y-POS
    • Vari 10-13: ORDNER ID 1-4
    • Switch 1: kann blättern?

    _________________________________________________________________________________

    Ok, nachdem das erledigt ist, überlegen wir uns mal den Ablauf. zunächst wollen wir mal den ganzen Variablen ein paar Werte rein drücken.
    dazu einige Notizen an der Stelle. Wie Eingangs erwähnt speichern wir in der ID sowohl die ID als auch die Anzahl!!!
    Später wird das durch MOD raus gefiltert.

    Code-technisch heißt das wir Nullen die ID-Variablen:
    Code:
    <> ORDNER ID 1-4 = 0
    Ok, machen wir jetzt mal kleinen Sachen. ORDNER Zähler wird auch auf 0 gesetzt, denn das steht für das Item das du grad überprüfst. Dabei brauchst du nicht mal in der Item-Database die Items geordnet haben! Denn dazu haben wir ja ORDNER Abbruch. Der startet mit 1 und steht über die Anzahl an Items die du hast. in unserem Beispiel haben wir maximal 10!
    Code:
    <> ORDNER Zähler = 0
    <> Ordner Werte = 1
    ORDNER Pic-ID musst du mit dem Wert initialisieren, mit dem du die das erste Bild anzeigen willst, wir nehmen hier mal 5!
    Code:
    <> ORDNER Pic-ID = 5
    ORDNER Pos-X und Pos-Y musst nur natürlich auch anpassen wir du meinst.
    Wir nehmen hier mal einfach X = 64 und Y =72!
    Code:
    <> ORDNER Pos-X = 64
    <> ORDNER Pos-Y = 72
    Ok, jetzt noch den Switch auf OFF, weil wir ja nicht wissen ob wir blättern können. Es könnte ja sein, das keine Items mehr kommen.
    Code:
    <> kann blättern = OFF
    Und jetzt kommt das Interessante an dem System. Wir setzen ORDNER Items Sichtbar = ORDNER Startpunkt! Warum?
    Ganz einfach, der ORDNER Zähler würde nun später auf eine Item zeigen das nicht existiert und würde so auch keinen Wert zurückgeben, was dazu führt das er einen Schleifendurchlauf machen ohne das erste Item zu sehen, wenn du ORDNER Items Sichtbar zb auf -1 hättest! Verstanden?
    Trotzdem wird in der Schleifen der Zähler +1 gerechnet. was ihn zu dem nächsten Item bringt. Wenn du nun zb -4 machst, dann würde er die erste vier Items nicht angucken, sondern erst die nächsten 4 und ZACK haben wir geblättert nicht wahr?
    Damit haben wir also insgesamt das hier bisher:
    Code:
    <> ORDNER ID 1-4 = 0
    <> ORDNER Zähler = 0
    <> Ordner Werte = 1
    <> ORDNER Pic-ID = 5
    <> ORDNER Pos-X = 64
    <> ORDNER Pos-Y = 72
    <> kann blättern = OFF
    <> ORDNER Items sichtbar = ORDNER Startpunkt
    Der Startpunkt muss beim Start des Menü außerhalb dieses Calls auf 1 gesetzt werden!
    _________________________________________________________________________________

    So nun aber mal langsam zum Algorithmus! Hier bei nutze ich immer Labels und keine Loops, weil sich damit eben leichter springen lässt.
    Wir fangen also mit einem Label an, gefolgt von einem ORDNER Zähler +1.
    Außerdem einer Abfrage ob ORDNER Abbruch = 10 ist. (wir erinnernn uns, das sich das die Schleifendurchgänge nach der Anzahl der Items richten bei dieser Vari!). ELSE, dann rechnen wir auch ORDNER Abbruch + 1 (als Information, das 1 Item von 19 Items angeschaut wurde!) und machen ein Goto Label 1#.
    Nach dem wir den Zähler +1 gerechnet haben fehlt aber noch was! Hier muss nämlich ein Call her, der in ORDNER CONTENT die Anzahl des Items speichert, welches gerade angeschaut wird.
    Dieser sieht ungefähr so aus:
    Code:
    <> If ORDNER Zähler = 1 then Ordner Content = Anzahl von Trank
    <> If ORDNER Zähler = 2 then Ordner Content = Anzahl von Hi-Trank
    .
    .
    .
    (hier musst du dann selbst sortieren)
    Dementsprechend sieht das Ordner-System nun folgendermaßen aus:
    Code:
    <> Label 1#
    <> ORDNER Zähler +1
    <> CALL [Common- oder Map-Event in der Content gesetzt wird, wie oben beschrieben]
    <> If ORDNER Abbruch >= 10 
         Then: [nichts]
         Else: 
          <> ORDNER Abbruch +1
          <> GOTO Label 1#
    Wunderbar
    Natürlich reicht das nicht, irgendwo muss man ja die Werte setzen und den Kram nicht wahr?
    Dazu kommen wir jetzt, zwischen dem Call und dem IF kommen jetzt eine weitere Abfrage in der wir überprüfen ob ORDNER Content >= 1, sprich ob du dieses Item hast.
    Und jetzt kommt noch ein Kniff der genau das macht wie im Beispiel ganz oben beschrieben wurde. Nach der Abfrage des Contents machen wir noch eine Abfrage ob ORDNER Item Sichtbar >= 1 ist. So verhindern wir, das selbst wenn das Item existiert es nicht angezeigt werden würde, da die Variable ja auf -4 beim blättern stehen würde.
    Und Noch besser. durch die Abfrage ob der Content >= 1 haben wir erreicht, dass das Item übersprungen wird wenn es nicht da ist! das Nächste, das existiert würde erst ran rücken!!!
    Das sieht dann so aus:
    Code:
    <> If ORDNER CONTENT >= 1 Then
      <> If ORDNER Item Sichtbar >= 1 Then
    Ich denke damit wäre nun das große Geheimnis des Ordnersystems gelüftet
    Nun müssen wir noch die ID's befüllen und das Item anzeigen.
    Dazu fragen wir ab ob ORDNER Item Sichtbar = 1,2,3 oder 4 ist.
    Und füllen dann die ID rein die ja durch ORDNER-Zähler gezeigt wird und dann noch die Anzahl der Items:
    Code:
    If ORDNER Item Sichtbar = 1 then
      <> ORDNER ID 1 = ORDNER Zähler
      <> ORDNER ID 1 *= (mal) 100 [wir erinnern uns, an den Exkurs]
      <> ORDNER ID 1 += (plus) ORDNER Content
    <>If ORDNER Item Sichtbar = 2 then
      <> ORDNER ID 2 = ORDNER Zähler
      <> ORDNER ID 2 *= (mal) 100 [wir erinnern uns, an den Exkurs]
      <> ORDNER ID 2 += (plus) ORDNER Content
    If ORDNER Item Sichtbar = 3 then
      <> ORDNER ID 3 = ORDNER Zähler
      <> ORDNER ID 3 *= (mal) 100 [wir erinnern uns, an den Exkurs]
      <> ORDNER ID 3 += (plus) ORDNER Content
    If ORDNER Item Sichtbar = 4 then
      <> ORDNER ID 4 = ORDNER Zähler
      <> ORDNER ID 4 *= (mal) 100 [wir erinnern uns, an den Exkurs]
      <> ORDNER ID 4 += (plus) ORDNER Content
    Diesen Teil habe ich bei mir über einen Pointer gelöst, was dann so aussehen würde:
    Code:
    <>ORDNER Temp = Variablen Nummer von (ORDNER ID 1 minus 1)
    <> ORDNER Temp += ORDNER Items Sichtbar
    <> ORDNER Temp [Var no] = ORDNER Zähler
    <> ORDNER Temp [Var no] *= 100
    <> ORDNER Temp [Var No] += ORDNER Content
    Macht genau das Gleiche nur kürzer, aber wenn du das nicht verstehst, nimm lieber die Variante von oben!
    Als Nächstes benötigen wir wieder einen Call der das Item an der Position Pos-X und Pos-Y mit der ID Pic-ID anzeigt.
    Der Call sieht ähnlich wie der Call zu der Anzahl an Items aus:
    Code:
    <>If ORDNER Zähler = 1 then SHOW PIC Trank ID:10XXX mit Pos-> und PosY
    [10XXX steht hier für die Variablennummer die du Pic-ID genannt hast
    .
    .
    .
    [usw]
    Das Ganze sieht also so aus: (Mit meiner Pointer-Variante!)
    Code:
    <> If ORDNER Content >= 1 Then
      <> If ORDNER Items Sichtbar >= 1 Then
        <> ORDNER Temp = Variablen Nummer von (ORDNER ID 1 minus 1)
        <> ORDNER Temp += ORDNER Items Sichtbar
        <> ORDNER Temp [Var no] = ORDNER Zähler
        <> ORDNER Temp [Var no] *= 100
        <> ORDNER Temp [Var No] += ORDNER Content
        <> Call [Common- oder Map-Event das die Bilder anzeigt
    So weit so gut.
    Jetzt rechnen wir ORDNER Pic ID + 1 für das nächste Item das kommen könnte und die Y-Pos + 16 (also ein Kästchen nach unten, musst du anpassen).
    Außerhalb der Bedingung für ORDNER Items Sichtbar muss du nun noch ORDNER Items Sichtbar +1 rechnen, damit er wenn ORDNER Items Sichtbar er auf den nächsten Item Slot zeigt (oder wenn er im Minusbereich ist, dann halt so das er weiß wann er ein Item anzeigen kann).
    Außerdem setzen wir noch ORDNER Content auf 0, damit nicht zufällig ein Item angezeigt wird das es gar nicht gibt.
    Dein Code sollte nun folgendermaßen aussehen:
    Code:
    <> Label 1#
    <> ORDNER Zähler +1
    <> CALL [Common- oder Map-Event in der Content gesetzt wird, wie oben beschrieben]
    <> If ORDNER Content >= 1 Then
      <> If ORDNER Items Sichtbar >= 1 Then
        <> ORDNER Temp = Variablen Nummer von (ORDNER ID 1 minus 1)
        <> ORDNER Temp += ORDNER Items Sichtbar
        <> ORDNER Temp [Var no] = ORDNER Zähler
        <> ORDNER Temp [Var no] *= 100
        <> ORDNER Temp [Var No] += ORDNER Content
        <> Call [Common- oder Map-Event das die Bilder anzeigt
      <>End:
      <>ORDNER Items Sichtbar += 1
      <>ORDNER Content = 0
    <>End:
    <> If ORDNER Abbruch >= 10 
         Then: [nichts]
         Else: 
          <> ORDNER Abbruch +1
          <> GOTO Label 1#
    <>End:
    Allerdings könnte hier noch ein Bug entstehen, bei dem das letzte Item immer wieder geblättert werden kann! Ich will das nicht weiter erläutern, weil das mein Fehler war (Ich hab das Ordnersystem ziemlich schnell gemacht und musste dann fixen ).
    Nach dem letzten End musst du nun den Switch kann blättern auf On schalten. Allerdings mit einer Bedingungg die... naja ewas unschön ist, aber egal.
    De Bedingung ist, das ORDNER ID 4 (also der letzte Item-Slot) < die größte ID ist. Das heißt im Klartext, das wenn du 10 Items hast du abfragen muss ob ORDNER ID 4 < 1000 (immer an den Exkurs denken, die ID 10 steht an Stelle 1000 und 100 also wie oben beschrieben so: 00 10 XX).
    Hast du 20 Items musst es halt heißen: If ORDNER ID 4 < 20 usw...
    So sieht das aus:
    Code:
    <> Label 1#
    <> ORDNER Zähler +1
    <> CALL [Common- oder Map-Event in der Content gesetzt wird, wie oben beschrieben]
    <> If ORDNER Content >= 1 Then
      <> If ORDNER Items Sichtbar >= 1 Then
        <> ORDNER Temp = Variablen Nummer von (ORDNER ID 1 minus 1)
        <> ORDNER Temp += ORDNER Items Sichtbar
        <> ORDNER Temp [Var no] = ORDNER Zähler
        <> ORDNER Temp [Var no] *= 100
        <> ORDNER Temp [Var No] += ORDNER Content
        <> Call [Common- oder Map-Event das die Bilder anzeigt
      <>End:
      <>ORDNER Items Sichtbar += 1
      <>ORDNER Content = 0
    <>End:
    <> If ORDNER Abbruch >= 10 
         Then: [nichts]
         Else: 
          <> ORDNER Abbruch +1
          <> GOTO Label 1#
    <>End:
    <>If ORDNER ID 4 < 1000 then
      <> Switch kann blättern = ON
    <>End:
    <>Label 2#
    Huch? Wo kommt der Label 2 jetzt her? Tja, der dient der Behebung eines Fehlers der Auftreten würde wenn man die Gesamtzahl der Item durch 4 teilbar ist (also MOD 4 = 0). dazu müssen zusätzlich noch eine Bedingung am Anfang des Algorithmus einfügen, welche zu Label 2 springt! Diese überprüft ob ob ORDNER Items Sichtbar >= 5 ist (also ob kein Slot mehr frei ist), wenn das so ist dann wird der Switch kann blättern angemacht, weil das ja heißt das da noch Items sind und springt zu Label 2! das Ganze sieht so aus:
    Code:
    <> ORDNER ID 1-4 = 0
    <> ORDNER Zähler = 0
    <> Ordner Werte = 1
    <> ORDNER Pic-ID = 5
    <> ORDNER Pos-X = 64
    <> ORDNER Pos-Y = 72
    <> kann blättern = OFF
    <> ORDNER Items sichtbar = ORDNER Startpunkt
    
    <> Label 1#
    <> ORDNER Zähler +1
    <> CALL [Common- oder Map-Event in der Content gesetzt wird, wie oben beschrieben]
    <> If ORDNER Items Sichtbar >=5 then
      <> Switch kann blättern = ON
      <> GOTO Label 2#
    <>End:
    <> If ORDNER Content >= 1 Then
      <> If ORDNER Items Sichtbar >= 1 Then
        <> ORDNER Temp = Variablen Nummer von (ORDNER ID 1 minus 1)
        <> ORDNER Temp += ORDNER Items Sichtbar
        <> ORDNER Temp [Var no] = ORDNER Zähler
        <> ORDNER Temp [Var no] *= 100
        <> ORDNER Temp [Var No] += ORDNER Content
        <> Call [Common- oder Map-Event das die Bilder anzeigt
      <>End:
      <>ORDNER Items Sichtbar += 1
      <>ORDNER Content = 0
    <>End:
    <> If ORDNER Abbruch >= 10 
         Then: [nichts]
         Else: 
          <> ORDNER Abbruch +1
          <> GOTO Label 1#
    <>End:
    <>If ORDNER ID 4 < 1000 then
      <> Switch kann blättern = On
    <>End:
    <>Label 2#
    Das wars, wir sind komplett fertig hier!
    _________________________________________________________________________________
    Wenn du nun dein Menü baust, brauchst du anfangs nur ORDNER Startpunkt = 1 setzen und dann wenn du zb nach rechts drückst, abfragen ob der Switch kann blättern on ist und dann ORDNER Startpunkt -4 und dann einfach das Event hier callen
    Zusätzlich machst du nach dem Call noch eine variable "SEITE" und rechnest die anfangs auf Null und bei einem Druck auf Rechts +1.
    Wenn du nun nach links drückst, dann fragst du ab ob die SEITE >= 1 ist, setzt Startpunkt +4 und callst wieder den Ordner

    Schaue dir in Zusammenhang mit diesem Post am Besten Velsarbor das Menü oder Tara's Adventure an!
    Dann wirst du es verstehen und kannst es kopieren

    Und noch ein Tipp, öffne nicht immer für jeden Mist einen Thread. Versuch doch mal selber deinen Kopf anzustrengen. Wenn du dir immer von anderen alles sagen lässt, bringt das nichts und du wirst nur vergessen wie du etwas gemacht hast. Klar dauert das länger aber so machst du wenigstes nicht den Eindruck als währst du arrogant (jedenfalls kam es so für mich rüber als du in meinem Thread meintest das es ordentliches Sprungscript scheiße).

    MfG R.D.

    Edit: @Nir-kun
    Das ist ja noch schlimmer xD bei mir wäre das ewig lang bei 100 Items und Waffen und Rüstung etc...
    Und ist das Bubblesort?

    Geändert von R.D. (31.08.2010 um 10:42 Uhr)

  11. #11

    Users Awaiting Email Confirmation

    Danke dir.
    Ich werds mir heute nachmittag durchlesen.
    Auch wenn ich nicht gerne den PicPoiner Patch nutze - trotzdem vieln vielen dank!!1

    €dit:
    Zitat Zitat
    Vari 9: ORDNER X-POS
    Tippfehler? Soll eher Y sein,oder?

    Geändert von Engel der Furcht (12.04.2010 um 12:17 Uhr)

  12. #12
    Zitat Zitat von Engel der Furcht Beitrag anzeigen
    Auch wenn ich nicht gerne den PicPoiner Patch nutze
    Erklärst du mir, warum?

  13. #13
    Der PPP erspart dir einiges an Arbeit, glaub mir.
    Damit minimierst du deine Codezeilen, wenn es um PICAnzeige geht, immens und dein ganzer Code wird dann auch für dich, als Entwickler, viel einfach zu verstehen, da du schneller erfassen kannst, was du da gecoded hast.

    Nochma an Cherry:
    Der PPP is einfach spitze^^

    PeAcE
    MorDen

  14. #14
    @Engel der Furcht:

    Das ist ein Teil für EIN Item. Die Abfrage stellt sicher, wo das Item in der Liste dann abgebildet ist, an 1., 2., 3., oder 4. Stelle (also ganz unten)
    Gleich nach diesem Wiederholt sich der Ablauf nach dem <> Change Variable: [1439] += 1, also das nächste Item wird abgefragt.
    Durch diese Variabel wird die Position des 2. Items bestimmt, wenn die Variabel 2 ist, wird das Picture von dem Item an der 2. Stelle angezeigt, durch diese Abfrage:

    Wenn die Variabel 5 ist, also eins zu viel als es angezeigt werden kann, dann macht man "Jump to Label" zu der Stelle, ab der man mit den Knöpfen die Items auswählen kann.
    Ich hoffe ich hab das jetzt einigermassen verständlich erklären können o.o

    @ R.D:
    Vielen Dank, du hast das Problem mit dem Umblättern bei mir gelöst! Das mit dem "Item Ordnerstelle set -4" ist genial, und für Seite 3 Setzt man es einfach -8. Sonst hab ich mein viel zu langes Itemcallevent so gelassen, aber das ist trotzdem einen Crediteintrag wert (Die Creditsliste besteht bisher sowieso nur aus meinem Namen xD)
    Aber für jemand, der das Ordnerprinzip der Itemliste nicht richtig kennt, würde aus diesem -4 bestimmt nicht schlau werden, ich hab auch eine weile gebraucht bis ich wusste was du meintest.

    @ Morden:
    Pic Pointer Patch? Kenne ich nicht, kann mir aber vorstellen, wozu der gut ist. ist der Patch mit allen Makern kompatibel?

    MfG, G!

    Geändert von G-Brothers (12.04.2010 um 14:57 Uhr)

  15. #15

    Users Awaiting Email Confirmation

    @G-Brothers &R.D.:
    Damit eure Mühe nicht (ganz) umsonst,
    werde ich mal beide Varianten versuchen und dann selber entscheiden,welche Lösung für mich selber einfacher ist.


    Zitat Zitat
    Und noch ein Tipp, öffne nicht immer für jeden Mist einen Thread. Versuch doch mal selber deinen Kopf anzustrengen. Wenn du dir immer von anderen alles sagen lässt, bringt das nichts und du wirst nur vergessen wie du etwas gemacht hast. Klar dauert das länger aber so machst du wenigstes nicht den Eindruck als währst du arrogant
    Ich hab mir bereits den Kopf darüber zerbrochen,wie so eine "Ordner"-Variante genau funktioniert. Ich bin nicht gerade der große der Informatiker und meine Erfahrung mit sowas ist gleich 0.



    Zitat Zitat von Cherry
    Erklärst du mir, warum?
    Naja,ich weiss selbst nicht warum,aber nur für 2-3 Sachen den Picpointer Patch zu benutzen?


  16. #16
    Zitat Zitat von Engel der Furcht Beitrag anzeigen

    Naja,ich weiss selbst nicht warum,aber nur für 2-3 Sachen den Picpointer Patch zu benutzen?
    Der Pic Pointer Patch ist mit der absolute Megapatch für alle Grafikoperationen.
    Stell dir mal vor, ich hab einen Call um Zahlen von 0-9 an einer beliebigen Position mit einer beliebigen ID dar zustellen

    Zitat Zitat
    Ich hab nie das Wort "scheiße" verwendet und ausserdem meinte ich den Bewegungsablauf/"Flüssigkeit" der Sprünge.
    Siehe z.b. TLoZ Opal of Shiekah - die Sprünge sind kantig und nicht flüssig.
    Sorry wenn das falsch rübergekommen ist
    Naja, ich sage ja auch nicht, weil dein KS scheiße ist wandert es in die Tonne... Pass einfach auf, wie du etwas formulierst und sei nicht so überheblich.

  17. #17

    Users Awaiting Email Confirmation

    Da hast du auch wieder Recht ^^""

    Ich hab da auch mal ne Frage bzw. bin ich verwirrt.

    Zitat Zitat
    <> ORDNER ID 1-4 = 0
    <> ORDNER Zähler = 0
    <> Ordner Werte = 1
    <> ORDNER Pic-ID = 5
    <> ORDNER Pos-X = 64
    <> ORDNER Pos-Y = 72
    <> kann blättern = OFF
    <> ORDNER Items sichtbar = ORDNER Startpunkt
    Zitat Zitat

    • Vari 1: ORDNER Startpunkt
    • Vari 2: ORDNER Items Sichtbar
    • Vari 3: ORDNER PIC ID
    • Vari 4: ORDNER Zähler
    • Vari 5: ORDNER Abbruch
    • Vari 6: ORDNER Content
    • Vari 7: ORDNER TEMP
    • Vari 8: ORDNER X-POS
    • Vari 9: ORDNER Y-POS
    • Vari 10-13: ORDNER ID 1-4
    • Switch 1: kann blättern?
    Was genau ist denn jetzt "Ordner Werte"?

    Geändert von Engel der Furcht (12.04.2010 um 17:50 Uhr)

  18. #18
    Wie beschrieben ist das ORDNER Abbruch.
    ein Fehler meinerseits, bei mir heißt das einfach nur so.

  19. #19

    Users Awaiting Email Confirmation

    ah danke "

    Fetter €dit:

    Öhm,dank dem PPP Patch spinnen meine Pictures rum (Kampfübergang funktioniert nicht richtig,das scrollen des KampfBGs funktioniert nicht richtig...)

    €dit²: ich hab da nochmal ne Frage:
    Im "Exkurs" steht ja folgendes:
    Also, wir stellen uns die ID Variable als Anreihung von jemals 2 Bit:

    Zitat Zitat
    00 00 00
    | | |_____> Anzahl der Items
    | |________> ID
    |___________> NICHTS!

    Wenn wir nun die ID wollen machen wir einfach folgendes: (Beispiel)
    Code:
    <> ORDNER Temp = ORDNER ID 1
    <> ORDNER Temp /= (durch) 100 [Der Maker rundert IMMER ab!]
    Und schon hätten wir die ID. Würde in der Variable nun zb 1234 stehen, bedeutet das 1234 / 100 = 12,34 = 12!
    Easy oder?

    Bei der Anzahl kommt nun das MOD zum Einsatz, anstatt nämlich durch 100 zu rechnen, mach wir modulo 100 ( MOD 100), das heißt, das nur der Rest der Division erhalten bleibt:
    Code:
    <> ORDNER Temp = ORDNER ID 1
    <> ORDNER Temp %= (MOD) 100
    zb hat man bei 1234 % = 12,34. Da nur der Rest ausgegeben wird (also alles was hinter dem Komma steht bei Hunderterstellen) erhalten wir 34!
    ich habe nun dieses hier drin:

    Zitat Zitat
    If ORDNER Item Sichtbar = 1 then
    <> ORDNER ID 1 = ORDNER Zähler
    <> ORDNER ID 1 *= (mal) 100 [wir erinnern uns, an den Exkurs]
    <> ORDNER ID 1 += (plus) ORDNER Content
    <>If ORDNER Item Sichtbar = 2 then
    <> ORDNER ID 2 = ORDNER Zähler
    <> ORDNER ID 2 *= (mal) 100 [wir erinnern uns, an den Exkurs]
    <> ORDNER ID 2 += (plus) ORDNER Content
    If ORDNER Item Sichtbar = 3 then
    <> ORDNER ID 3 = ORDNER Zähler
    <> ORDNER ID 3 *= (mal) 100 [wir erinnern uns, an den Exkurs]
    <> ORDNER ID 3 += (plus) ORDNER Content
    If ORDNER Item Sichtbar = 4 then
    <> ORDNER ID 4 = ORDNER Zähler
    <> ORDNER ID 4 *= (mal) 100 [wir erinnern uns, an den Exkurs]
    <> ORDNER ID 4 += (plus) ORDNER Content
    heißt das,ich muss Ordner ID 1-4 Mod 100 nehm'?

    €dit³:
    ah,ich glaub ich habs jetzt...?

    Geändert von Engel der Furcht (12.04.2010 um 19:30 Uhr)

  20. #20
    Du hast noch eine Abfrage nach "if Content >= " vergessen.
    da muss noch eine rein, so das es so aussieht:
    Code:
    <> Label 1#
    <> ORDNER Zähler +1
    <> CALL [Common- oder Map-Event in der Content gesetzt wird, wie oben beschrieben]
    <> If ORDNER Content >= 1 Then
      <> If ORDNER Items Sichtbar >= 1 Then //DAS FEHLT! ERST DANACH DIE IF MIT "IF ORDNER ITEMS SICHTBAR = 1 usw.!"
        <> ORDNER Temp = Variablen Nummer von (ORDNER ID 1 minus 1)
        <> ORDNER Temp += ORDNER Items Sichtbar
        <> ORDNER Temp [Var no] = ORDNER Zähler
        <> ORDNER Temp [Var no] *= 100
        <> ORDNER Temp [Var No] += ORDNER Content
        <> Call [Common- oder Map-Event das die Bilder anzeigt
      <>End:
      <>ORDNER Items Sichtbar += 1 
      <>ORDNER Content = 0
    <>End:
    <> If ORDNER Abbruch >= 10 
         Then: [nichts]
         Else: 
          <> ORDNER Abbruch +1
          <> GOTO Label 1#
    <>End:
    Versuch es doch mal zu verstehen^^ Du versucht es ja nicht mal...

    Edit:
    Wenn ihr jemand danken wollt, dann bitte Lachsen

Berechtigungen

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