Ergebnis 1 bis 20 von 40

Thema: [VX-Ace] Mein versuch einer HitBox für ein Zelda KS

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Nein, das ist dort tatsächlich ein Vergleich.
    In Ruby wird das Symbol "<" für mehrere Dinge verwendet. Man sagt der <-Operator ist "überladen".

  2. #2
    Jup ich brauch einen Awsome Ruby Kurs^^ Das klingt wie Chinesisch für meine Ohren

  3. #3
    Ruby ist vielleicht auch nicht die einfachste Sprache zum anfangen.
    Meiner Meinung nach gibt es zu viele Alternativen, wie man bereits in Cepanks Beitrag gesehen hat.
    Du kannst den selben Effekt mit dutzenden verschiedenen Operatoren durchführen.

    Für einen erfahrenen Programmierer ist das sicher sehr angenehm, für einen Anfänger aber sicher sehr verwirrend kann ich mir vorstellen.

  4. #4
    Hallo, ich habe nun angefangen mich durch den Thread zu arbeiten.
    Ich konnte dank euch nun nicht nur eine Range sondern auch gleich noch erfolgreich eine Liste einfügen.
    Wobei ich euch wohl rund um die Liste eventuell die Tage noch etwas mit fragen zum verständniss löchern werde.

    Ranges sind mir zwar noch viel vertrauter aber da ihr bisher so freundlich ward, begebe ich mich mal auf neues land und spiele mit der liste rum.

    Ohne gross auf einfache einstellbarkeit zu achten habe ich folgenden stand nun:
    Code:
    for evid_min in [1,2,3].each #1,2,3 will ich durch die liste der jeweiligen map tauschen
    if $game_map.events[evid_min] != nil
    if Math.hypot($game_map.events[evid_min].screen_x - 
    $game_map.events[@event_id].screen_x , $game_map.events[evid_min].screen_y - 
    $game_map.events[@event_id].screen_y) <= 32
    if evid_min != @event_id
    $game_self_switches[[$game_map.map_id, evid_min, 'A']] = true
    end ; end ; end
    
    end

    Zitat Zitat von Cornix Beitrag anzeigen
    Wahrscheinlich willst du Events in eine Liste packen nehme ich an.
    Eine Liste wird in Ruby folgendermaßen definiert:
    Code:
    $someList = [a, b, c]
    wobei "someList" der Name der Liste ist und a, b und c irgendwelche Objekte wären.
    Das Dollarzeichen ($) gibt an, dass die Liste global sichtbar ist, also überall benutzt werden kann. Kein guter Programmierstil, aber für einen Anfänger am einfachsten.
    Ich hatte nun vor beim erstmaligen betreten der jeweiligen map die Initialisierungsseiten der einzelnen Gegner einmalig ablaufen zu lassen, damit die ihre werte in das self variablen script speichern.(Das sollte ohne probleme klappen)
    Frage: Wie würde der Eventscriptbefehl ausschauen damit sich das event selber in die liste mit der id der aktuellen map ablegt, ohne einen Tag im namen zu verwenden und also mehrere listen für jede map id eine? (Das Event führt sich ja selber aus müsste also sowas wie: Gegnerlistevon"game map id"[].include this [@event.id]. (Erschlag mich nicht,das ist brainstorming^^und kein code)
    Und zweitens, wie kann ich das Event wieder aus jener Liste entfernen? Bräuchte einmal den self befehl fürs event und interessanterhalber wie ich es von ausserhalb manipulliere.

    Du sagst das mit dem Dollarzeichen ist unsauber, brauche ich das aber nicht um von ausserhalb drauf zu greifen zu können?
    Und noch viel wichtiger bleibt diese Liste nach dem Speichern und neuladen des Spiels erhalten?

    Geändert von Bex (18.06.2014 um 12:35 Uhr)

  5. #5
    Zitat Zitat
    Und noch viel wichtiger bleibt diese Liste nach dem Speichern und neuladen des Spiels erhalten?
    Die einfachste Lösung wäre, sie bei einer bestehenden Klasse als Variable einzutragen. Ich benutze auf dem XP dafür immer Game_Party. Das ist zwar nicht die sauberste Lösung, aber egal.

  6. #6
    Ah verstehe, also das $ Zeichen allein macht nicht das sie im maker mit gespeichert wird beim spiel speichern?
    Die Variable muss also definiert sein und niedergeschrieben vorher im Scripteditor um gespeichert werden zu können beim Spiel Safe.

  7. #7
    Zitat Zitat von Bex Beitrag anzeigen
    Wobei ich euch wohl rund um die Liste eventuell die Tage noch etwas mit fragen zum verständniss löchern werde.
    Du kannst dir auch die Dokumentation in der Hilfe-Datei des Makers durchlesen.
    Fälschlicherweise werden Listen in Ruby als Array bezeichnet, auch wenn sie keine Arrays im klassischen Sinne sind.

    Zitat Zitat von Bex Beitrag anzeigen
    Ich hatte nun vor beim erstmaligen betreten der jeweiligen map die Initialisierungsseiten der einzelnen Gegner einmalig ablaufen zu lassen, damit die ihre werte in das self variablen script speichern.(Das sollte ohne probleme klappen)
    Frage: Wie würde der Eventscriptbefehl ausschauen damit sich das event selber in die liste mit der id der aktuellen map ablegt, ohne einen Tag im namen zu verwenden und also mehrere listen für jede map id eine? (Das Event führt sich ja selber aus müsste also sowas wie: Gegnerlistevon"game map id"[].include this [@event.id]. (Erschlag mich nicht,das ist brainstorming^^und kein code)
    Und zweitens, wie kann ich das Event wieder aus jener Liste entfernen? Bräuchte einmal den self befehl fürs event und interessanterhalber wie ich es von ausserhalb manipulliere.
    Falls du eine globale Liste verwendest, zum Beispiel $someList, dann kannst du einfach folgendes Script in jedes Geschoss-Event auf der Karte packen und als Auto-Start (oder ähnliches) zu Beginn laufen lassen:
    Code:
    $someList.push(getEvent)
    Damit wird das Event hinten an der Liste angehängt.

    Zitat Zitat von Bex Beitrag anzeigen
    Du sagst das mit dem Dollarzeichen ist unsauber, brauche ich das aber nicht um von ausserhalb drauf zu greifen zu können?
    Das Dollarzeichen macht die Variable zu einer globalen Variable. Wenn du es verwendest kannst du immer und überall darauf zugreifen und die Variable jederzeit manipulieren.
    Globale Variablen werden in der Programmierung größtenteils verpönt und verachtet, weil sie als schlechter Programmierstil gelten. Sie sind zwar nützlich und effektiv, aber stellen ein schlechtes Design dar.
    Wenn jemand eine globale Variable verwendet ist es ein Anzeichen dafür, dass diese Person das Grundgerüst seiner Applikation nicht ganz durchdacht hat.

    Natürlich kennst du das Grundgerüst deiner Applikation (dem RPG-Maker Ace) nicht, weil es nicht dein Code ist. Idealerweise würdest du ersteinmal 2 Monate lang den gesamten Code rauf und runter lesen und verstehen und danach planen wie du die Kommunikation idealerweise implementieren kannst ohne globale Variablen verwenden zu müssen.
    Aber bei einem Projekt wie diesem hier ist das völlig übertrieben und nicht nötig. Man braucht keinen sauberen Stil um ein kleines Spielchen nebenher zu bauen.

    Zitat Zitat von Bex Beitrag anzeigen
    Und noch viel wichtiger bleibt diese Liste nach dem Speichern und neuladen des Spiels erhalten?
    Nein. Die Liste wird nicht mit gespeichert außer du änderst entweder die Speicherroutine oder machst die Liste zum Teil einer der Klassen, welche der Maker speichert (so wie Kelven es gesagt hat).
    Wenn du die Liste jedoch zu einem Teil einer anderen Klasse machst (wie zum Beispiel Game_Party, Game_Player, etc) dann kannst du keine globale Liste mehr verwenden.

  8. #8
    Zitat Zitat
    Wenn du die Liste jedoch zu einem Teil einer anderen Klasse machst (wie zum Beispiel Game_Party, Game_Player, etc) dann kannst du keine globale Liste mehr verwenden.
    Ach so, der Ace macht das anders als der XP? Beim XP ist die Instanz von Game_Party global. Oder ich missverstehe dich gerade.

  9. #9
    Zitat Zitat von Kelven Beitrag anzeigen
    Ach so, der Ace macht das anders als der XP? Beim XP ist die Instanz von Game_Party global. Oder ich missverstehe dich gerade.
    Die Game_Party ist eine globale Variable, die Liste wäre dann jedoch keine mehr.
    Natürlich kann man die Liste zu einem öffentichen Attribut der Game_Player Klasse erklären und dann über die globale Game_Player Instanz auf eine Liste zugreifen.
    Effektiv wäre es so, als ob man eine globale Liste hätte, aber technisch gesehen ist es nicht das selbe.

  10. #10
    Mögt ihr mir noch schnell verraten welchen Befehl ich nutzen muss um ein Event wieder aus der Liste zu entfernen?

  11. #11
    Ich würde dir für solche Probleme empfehlen einfach die Hilfe-Datei zu öffnen und nach "Array" zu suchen.
    Dort findest du dann eine ausgiebige Dokumentation mit allen Methoden, welche zur Verfügung stehen.
    Unter anderem die Methode "delete" mit der ein Element aus einer Liste gelöscht werden kann.

  12. #12
    Eine abschliessende Frage noch^^.
    Könnte es im Maker für mich einen merkbaren Performanceuntertschied geben zwischen den beiden Möglichkeiten:

    1.Einfach die IDs 1bis 500 durchrattern zu lassen und nach treffern zu fragen?
    oder
    2.Bei jedem aufruf den Namen der Events 1 bis 500 abzufragen , sie in eine Liste zu packen und dann nach treffern zu fragen?

    Wenn es keinen merkbaren unterschied macht wäre 2 cooler für mich.
    Du erwähntest aber das Ruby wohl nicht der schnellste im interpretieren ist. und da ich nicht weiss wie krass die unterschiede bei den einzelnen befehlen sind ....

  13. #13
    Das nennt man "premature optimization". Normalerweise implementiert man zuerst und macht sich um Performance erst dann Gedanken, wenn man merkt, dass es zu langsam ist.
    Natürlich ist es gut schon im Vorfeld ein gutes Ziel an zu streben, aber für Kleinigkeiten wie diese solltest du ersteinmal testen und danach prüfen wo das Bottleneck liegt.

    Ganz allgemein gesagt: Computer sind immer gut darin mit Zahlen zu arbeiten und Dinge nacheinander aus zu führen.
    Aber wenn es für dich angenehmer ist mit Text zu arbeiten dann solltest du das bevorzugen und nicht den eigenen Komfort für ein kleines bisschen Performance opfern.

  14. #14
    1.
    Hmm unsauberer stil verstehe ich, sehr hack anfällig die globalen variablen.
    2.
    Wie würde ich denn ein bereits zugefügtes objekt wieder aus der Liste entfernen?
    3.
    Das sie nicht gespeichert werden, ist blöd. Nicht global in gameplayer? das wäre ungut oder? würde mir dann wohl wenig nützen.
    4.
    Ich hatte vor ein Self Variablen Script einzufügen. Wenn eine Liste auch eine Variable ist, könnte ich die listen als self variable des event1 auf map id 1 anlegen und die mapid als namen wählen. ? Wäre jetzt meine Hoffnung.
    http://rpgmaker-vx-ace.de/board9-rpg...cript/#post611 Best Script Ever^^

    Geändert von Bex (18.06.2014 um 13:09 Uhr)

Berechtigungen

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