Ergebnis 1 bis 18 von 18

Thema: Flexibles "skill pointer" System ... oder so?!

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #7
    ...ich bin ehrlich, ich bin immer noch nicht sicher, dass ich ganz verstehe, was exakt deine Frage ist.

    Jetzt mal rein theoretisch würde ich es so machen:
    Du hast 27 Variablen pro Char, quasi die "Liste der erlernten Skills". Außerdem hast du eine Liste mit allen möglichen erlernbaren Skills - bspw. in einem Txt-File, in den Comments, in der Skill-Sektion der Database, wie auch immer - Hauptsache, du hast irgendwo diese Zahl-Skill-Zuordnung. Jeder Skill hat eine Zahl zwischen 1 und 99, so hast du viel Platz, um später noch neue Skills dazuzudichten. Diese Zahl nenne ich jetzt einfach mal Skill-ID.
    Wenn dein Char einen Skill lernt trägst du die Skill-ID des neu-erlernten Skills in diese 27er-Liste ein, entweder an die nächste freie Stelle, an einen fixen Platz... wie du magst. Den Schritt wirst du nicht ganz automatisieren können und den musst du halt jedes Mal ausführen, wenn dein Char einen Skill lernt. Darüber hinaus würde ich nun Gebrauch von der o.g. Möglichkeit machen, mehrere Werte in einer Variable zu speichern, bspw. indem du dann zu der ID "+ (Skill-Lv * 100)" hinzufügst. So hast du nun eine Liste wo vermerkt ist, welche Skills dein Char kann und auf welchem Level diese Skills bei ihm sind.

    Was das Ausrüsten betrifft kannst du nun entweder eine neue Variable erstellen, ich würde aber auch da noch abkürzen: Wenn ein Char einen Skill lernt (und ihn nicht automatisch ausrüsten soll), multiplizierst du die oben angegebene Formel noch mit -1. So kannst du nun ganz einfach abfragen, ob ein Parameter in deiner Liste > 0 ist - wenn ja, dann ist das der Skill, den dein Char ausgerüstet hat. So hast du ziemlich viel Flexibilität mit sehr wenigen Variablen.

    Was die Anzeige betrifft würde ich den Spaß nun komplett automatisieren (Achtung, Pseudocode incoming):
    Annahme: Mod1, Typ1 liegt bei (0|0), Spalten liegen 100px auseinander, Zeilen 20px. Die Skill-Liste ist unter V0100 - V0126 gespeichert. Das Skill-Lvl steht 20px rechts neben dem Skillnamen.

    Code:
    <> Set Var [0001:Mod_X] = 0
    <> Set Var [0002:Mod_Y] = 0
    <> Set Var [0003:Mod_Pointer] = 0
    <> Set Var [0004:Pic_Pointer] = 0
    <> Set Var [0005:Skill_Lv] = 0
    
    //Variablen 0100 - 0126 enthalten die Skill-Liste
    
    <>BEGIN LOOP
      <>V[0004] = V[0003]
      <>V[0004] + 100
      <>V[0004] = V[V[0004]]
      <>V[0005] = V[0004]
      <>V[0005] / 1000
    
      // X-Koordinate anpassen
      <>V[0001] = V[0003]
      <>V[0001] mod 9
      <>V[0001] * 20
    
      // Y-Koordinate anpassen
      <>V[0002] = V[0003]
      <>V[0002] mod 3
      <>V[0002] * 100
    
      // Skillnamen anzeigen
      <>V[0004] mod 1000
      <>If V[0004] > 0
        <> (Zeige Bild für ausgerüsteten Skill an Pos(V0001|V0002))
      :ELSE CASE
        <> V[0004] * (-1)
        <> (Zeige Bild für nicht ausgerüsteten Skill an Pos(V0001|V0002))
      :END CASE
    
      // Skill-Lvl Anzeigen
      <>If V[0005] < 0
        <>V[0005] * (-1)
      :END CASE
      <>V[0001] + 20
      <>Show Picture (Skillnummer_[V0005], Pos(V0001|V0002))
    
      // Fertig?
      <>V[0003] + 1
      <>If V[0003] > 27
        <>Break Loop
      :END CASE
    
    END LOOP
    Dieser Code sollte dir dann eine 3x9-Tabelle generieren in der die Skills angezeigt werden, ihre Skilllevel (die Position der Ziffern dafür lässt sich dann ja anhand der Koordinaten für den Skillnamen bestimmen (oder umgekehrt, was dir lieber ist)), und der ausgerüstete Skill bekommt ein besonderes Bild.

    Wenn du nun durchnavigierst kannst du ja schauen, an welcher Position ist die Auswahl (again, 0-26) und dir dann wie in dem Beispiel ausgeben lassen, welcher Skill da hinterlegt ist, ob er ausgerüstet ist, wie stark er ist. Soll ein ausgerüsteter Skill abgelegt werden multiplizierst du mit (-1), umgekehrt ebenso. Bloß nicht-ausgerüstete Skills die auch so bleiben sollen dürfen halt das Vorzeichen nicht wechseln.
    Wenn der Spieler nun eine Zahlentaste drückt, schaust du einfach, in welcher Spalte er sich befindet, ermittelst daraus, an welcher Stelle der Liste er ist... und zack, kannste dir wieder ausgeben lassen, welcher Skill das ist usw. Dabei solltest du aber besser bei 0 anfangen zu zählen, das macht das ganze etwas simpler und sollte dann per ((9 * SPALTE) + ZAHL - 1) gehen - bist du in Spalte 0 und drückst 1, kommt da ((9*0)+1-1) = 0 raus, bei Spalte 2, Taste 9: ((9*2)+9-1) = (18+8) = 26. Da addierst du 100 (oder was immer bei dir zutrifft) um die Variablen-ID zu bekommen und - zack - weißt du wieder welcher Skill, wie stark, ausgerüstet ja/nein.
    Wenn du übrigens einfach dann bei 0200-0226 die Liste für Char 2 hast, kannst du das ganze Script auch für Char 2 verwenden - musst bloß statt +100 dann halt +200 rechnen. Das kannst du ja in eine Variable packen, dann musst du nichtmal das Script copy&paste-n für weitere Chars.

    Das einzige, was definitiv nicht geht und nicht gehen wird, ist, im Nachhinein dann die Skill_ID zu ändern. Du kannst die Reihenfolge der Anzeige ändern und alles, aber die ID muss gleich bleiben. Daran macht das System ja fest, welches Bild angezeigt wird und dann später auch, was der Skill eigentlich tut. Wenn du aber bloß die Sortierung ändern willst kannst du das vorab tun, wenn du einmal die Skill-Liste entsprechend belegst.

    Geändert von BDraw (11.01.2018 um 00:14 Uhr)

Berechtigungen

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