mehrwertiges Inventar

  • GM 8

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

  • mehrwertiges Inventar

    Ich habe mir gestern Abend ein Inventar gebastelt.

    Das Inventar hat 5 Positionen und jedes ist in einem Array gespeichert:

    GML-Quellcode

    1. global.items[0]='<leer>'



    wenn etwas hinzukommt, wird das '<leer>' gegen das bekommene Item eingetauscht.
    funktioniert super.

    Doch meine Items sollen nicht nur schön aussehen, sondern auch etwas bewirken. Bzw Werte wie "HP, LVL, ATK, DEF" usw haben.
    Ich habe mich im Forum ein wenig umgelesen und string_pos gefunden. Also einen einzelnen Wert unterteilen.

    GML-Quellcode

    1. global.items[0]='<leer>|lvl'

    mit:

    GML-Quellcode

    1. global.mitem1=string_copy(global.items[0], 0, string_pos('|',global.items[0]))

    speichere ich den wert von 0 bis |, doch wenn es mehrere | gibt, oder den String nach dem |? Außerdem sollen die Werte flexibel sein (durch Items erhöhbar usw)
    for example:

    GML-Quellcode

    1. global.items[0]='<leer>|lvl|hp|atk|def|'

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von domis4 ()

  • hi
    mir würde da gerade spontan nur folgendes einfallen:

    du unterteilst den string in abschnitte und füllst mit platzhaltern auf.
    also z.b. string_werte = "00010 00344 00040" (die leerzeichen sind jetzt nur für die bessere übersicht, die würde ich dann weg machen)
    dann weißt du dass dein erster wert die positionen 0-4 hat, dein zweiter 5-9, der dritte 10-14,....
    somit hat jeder wert 5 stellen

    jetzt kannst du hergehen und sagen:

    GML-Quellcode

    1. wert1 = 10000 * string_chat_at(string_werte,0) + 1000 * string_chat_at(string_werte,1)
    2. + 100 * string_chat_at(string_werte,2) + 10 * string_chat_at(string_werte,3)
    3. + 1 * string_chat_at(string_werte,4)
    4. wert2 = 10000 * string_chat_at(string_werte,5) + 1000 * string_chat_at(string_werte,6)
    5. + 100 * string_chat_at(string_werte,7) + 10 * string_chat_at(string_werte,8)
    6. + 1 * string_chat_at(string_werte,9)

    das sollte eigntlich funktionieren, komm gerade nämlich nicht zum testen und konzentrieren kann ich mich gerade wegen faschingszugaufbau vor unserem haus auch nicht :thumbdown:

    MfG
  • okay, ich verstehe was du meinst :P
    soweit war ich auch schon, doch dann habe ich bemerkt, dass ich nicht nur Zahlen verwende (Name)
    jetzt könnte ich zwar hergehen und das ganze binär schreiben, aber ob sich das lohnt? ich meine, einen 6 stelligen Namen in binärzahlen zu speichern.
    andererseits könnte ich auch eine Liste erstellen, welche Zahl welcher Name wäre... Noch Vorschläge?^^
  • natürlich kannst du da auch einen string reinschreiben. musst nur auch wieder die start und endposition festlegen.

    GML-Quellcode

    1. name_1 = "";
    2. for(i = startposition_im_string; i <= endposition_im_string; i+=1){
    3. addChar = string_char_at(string_test,i)
    4. if addChar != '0'{ // die nullen sind wieder platzhalter, aber könntest auch was anderes nehmen z.b. +
    5. name_1 += addChar;
    6. }
    7. }


    außerdem ist mir aufgefallen dass oben ein kleiner fehler ist. ok, zwei kleine fehler ;)

    GML-Quellcode

    1. wert1 = 10000 * real(string_chat_at(string_werte,1) ) + ...

    habs gerade getestet, funktioniert einwandfrei.
  • Hey,

    eventuell mit einem 2D Array?

    item_info[0,0] = "Chronic" // name
    item_info[0,1] = 4 // + 4 STR
    item_info[0,2] = 100 // + 100 HP

    Natürlich könnte der zweite Wert auch eine ID sein für eine bestimmte Eigenschaft.

    item_info[0,0] = 2 // 6 = ID für +4 INT
    item_info[0,1] = 4 // 4 = ID für + 4 STR
    item_info[0,2] = 6 // 6 = ID für + 100 HP


    Ist aber sicherlich nicht die flexibelste Möglichkeit ...

    Cheers


    Brainstorm Edit:

    Eventuell einer Map? Oder jeden Slot als Objekt hinterlegen ?
  • Benutzer online 1

    1 Besucher