Ergebnis 1 bis 7 von 7

Thema: VX[Ace] Ruby | Namen von Gruppenmitglied mit unbekannter ID ändern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    VX[Ace] Ruby | Namen von Gruppenmitglied mit unbekannter ID ändern

    Ich arbeite gerade an einem Miniscript, dass den Namen und die Klasse eines Charas ändern soll, dessen ID ich nicht kenne, da der im Laufe des Spiels hinzugefügt wird.

    Das Ganze sieht momentan so aus:
    Code:
    position = 
    $game_party.all_members.find_index{|actor| 
    actor.name == "Ratte"}
    if position && position <= 3
       $game_actors[position].name = 
    "Rattentrupp"
    end
    Fehler an der Sache, es ändert nur den Namen des Charas mit der ID1. Ich denke mal es liegt leider an der Sache, dass ich nicht wirklich die ID ermittle. Leider weiß ich nicht, wie ich die ID genau abfrage.
    Den Code den ihr dort seht, habe ich an folgenden versucht zu entwickeln, den mir mal jemand geschrieben hat.
    Code:
    position = 
    $game_party.all_members.find_index {|actor| 
    actor.name == "Ratte"}
    if position && position <= 3
         item = $data_items[100]
         $game_party.gain_item(item, 1) 
         $game_party.remove_actor(
    $game_party.all_members[position].id)
    end
    Der macht auch fehlerfrei was er soll. Chara mit Namen Ratte ermitteln, Gegenstand geben und aus der Gruppe werfen.

    Wo genau liegt hier mein Fehler und wenn wir schon mal dabei sind, wie ändere ich noch die Klasse? Ich habe jetzt nur auf meiner Suche gefunden wie ich Name, Nickname und Ausrüstung ändere oO

  2. #2
    Du ermittelst die ID der Game_Party. Demnach müsstest du beim umbennen auch darauf zugreifen:
    anstelle von $game_actors[position].name nimmst du:
    $game_party.all_members[position].name

    Damit sollte es dann laufen.

  3. #3
    Danke, dass geht ^^

    Du weißt nicht zufällig wie ich darüber noch die Klasse ändern kann?

  4. #4
    Ja klar, da gibt es eine Methode beim Actor:

    change_class(class_id, keep_exp = false)

    d.h. du rufst die Methode so auf:
    $game_party.all_members[position].change_class(ID der Klasse, true oder false (jenachdem, ob exp der alten Klasse behalten werden sollen))

  5. #5
    Anscheinend beißt sich der Befehl mit Arrays oder ich hab nen vollkommen banalen Fehler gemacht...

    Zitat Zitat
    Script'Game_Interpreter' line1411: NoMethodError occurred
    undefined method `change_class' for [1]:Array
    Der Code sieht momentan wie folgt aus:

    Code:
    position = 
    $game_party.all_members.find_index{|actor| 
    actor.name == "Ratte"}
    if position && position <= 3
       $game_party.all_members[position].name= 
    "Rattentrupp"
       $game_party.all_members
    [position].change_class(52, true)
    end
    Ich habe auch schon mal die Namensänderung heraus genommen, was nichts änderte.Auch habe ich einfach mal ein "=" vor die Klammern gestellt.
    Ebenso brachte es nichts zu schreiben
    Code:
     $game_party.all_members
    [position].change_class(52, keep_exp= true)
    Wo genau liegt hier der Fehler?
    Was habe ich anders gemacht als mir gesagt wurde Oo?

    Geändert von Elster (05.01.2014 um 15:43 Uhr) Grund: Smilie im Text hat genervt

  6. #6
    nimm von [position].change_class(52, keep_exp= true) die erste [ Klammer hoch zu all_members.

    Zurzeit interpretiert der Maker das so:

    $game_party.all_members <-- Aufgabe 1
    [position].change_class(52, keep_exp= true) <-- Aufgabe 2

    wenn du es aber so schreibst:

    $game_party.all_members[
    position].change_class(52, keep_exp= true)

    dann sieht der Maker einen zusammenhang zwischen den Zeilen, weil die geöffnete Klammer nicht geschlossen wurde.
    Dadurch fasst er so lange die Zeilen zusammen, bis nicht die Klammer geschlossen wurde.

  7. #7
    Vielen Dank, dass wars. ^^
    Problem gelöst

Berechtigungen

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