Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 21 bis 40 von 41

Thema: No problems ^,^] Adrian2000 - Problemthread(RGSS)

  1. #21
    Zitat Zitat
    Das mit den globale Variablen: Warum sind sie so schlecht? Das höre ich oft. Aber ich kann mit denen besser arbeiten.
    Weil das den Code unflexibel macht und seine Wiederverwendung erschwert. Normalerweise kann man bestimmte Scripte, wie z.B. ein Fenster-Script, an mehreren Stellen des Spiels verwenden. Das bedingt aber, dass die Scripte sich untereinander nicht dieselben Variablen teilen. Da globale Variablen aber eben global sind, würden dann alle Scripte auf dieselben Variablen zugreifen und damit untereinander in Konflikt geraten. Mal als Beispiel: Angenommen die Auswahlfenster würden ihren Index alle in der globalen Variable $i speichern, dann würdest du, während du im Skillmenü einen Skill auswählst, auch gleichzeitig im Itemmenü und im Kampfaktionsauswahlmenü den Cursor bewegen. Mag ja sein, dass globale Variablen am Anfang erstmal einfacher erscheinen (weil man ja auch im Maker globale Variablen gewohnt ist). Aber es schadet ja nicht, sich von Anfang an den richtigen Stil anzugewöhnen.

    Zitat Zitat
    Der Cursor soll außerhalb eines Fenster angezeigt werden. Und auch über andere Fenster.
    Und je nach dem Wert von $smi soll er an einen komplett anderen Platz auf dem Bildschirm, also X und Y werden sich immer unterscheiden.
    Dann kannst du keinen Window-Cursor verwenden. Der kann nur innerhalb eines Fensters angezeigt werden. Du müsstest eine eigene Sprite_Cursor Klasse schreiben, die überall angezeigt werden kann. Wenn du mal in den früheren Kapiteln meines Kurses blätterst: Dort wird auch erwähnt wie man Menüs aus Sprites erzeugt und eigene Cursor zeichnet.

  2. #22
    Achso. Aber nur mal so nebenbei: Bei was wäen globale Variable sinnvoll?

    Und zur Sprite_Cursor: Yay, eine Herausforderung für mich Das war dann alles, was ich wissen wollte. Ich probiere das jetzt in den nächsten Tagen, lese mal deinen RGSS-Kurs durch(was ich schon immer mal machen wollte, aber wegen Schule noch keine Zeit hatte).

    Also danke ^,^
    Und zu Cepanks: Jep, du hattest recht xD Danke

    €dit: Ein Problem habe ich noch:

    $smi = $smi - 1

    Da erscheint eine Fehlermeldung:

    Script 'Menu' line 184: NoMethodError occured.

    undefined method `-' for nil:NilClass

    Geändert von SMWma (30.11.2010 um 20:21 Uhr)

  3. #23
    Dann hat deine Variable $smi noch keinen Wert. Du musst ihr ja irgendeinen Anfangswert zuweisen, bevor du sie erhöhen bzw. verringern kannst.

    Eigene globale Variablen machen im Maker eigentlich gar keinen Sinn. Man sollte generell auf Instanzvariablen und lokalen Variablen setzen.

  4. #24
    okaj. Allerdings habe ich die Variable schon mehrmals benützt. Und das jetzt alles zu verändern... boah ^,^
    Aber ich werde es mal beim nächsten Skript machen.

    Geändert von SMWma (01.12.2010 um 16:57 Uhr)

  5. #25
    Code (ruby):
        case Input.dir4
         when 4
           $smi = $smi - 1
         when 6
           $smi = $smi + 1
        end

    überprüft ja, ob eine Pfeiltaste bzw. Number-Key gedrückt ist. Aber wie bewerkstellige ich es, dass die Befehle nur dann ausgeführt werden, wenn die entsprechende Pfeiltaste gedrückt wurde?

    Btw: Google → RGSS Pfeiltasten abfragen → 3. Ergebnis → Hier landen ^,^

  6. #26
    Code (ruby):
    Input.trigger?(Input::DOWN)

    fragt ab ob die UNTEN-Taste gedrückt WURDE.

  7. #27
    So ^,^ Damit ist mein Skript offiziel fertig. Das erste Adventstürchen ist sozusagen offen xD

  8. #28
    ähhhmmm ja...

    PHP-Code:
        # Get actor
        
    actor $game_actors[@parameters[0]]
        
    # Change graphic
        
    if actor != nil
          actor
    .set_graphic(@parameters[1], @parameters[2],
            @
    parameters[3], @parameters[4])
        
    end
        
    # Refresh player
        
    $game_player.refresh
        
    # Continue
        
    return true 
    Das ist der Code, mit den die Character Graphic ausgewechselt wird... Mit parameter xD
    Für mehr Infos erster Beitrag... wieder mal...

  9. #29
    Die Methode dazu sieht so aus =>
    Code:
      #--------------------------------------------------------------------------
      # * Change Graphics
      #     character_name : new character file name
      #     character_hue  : new character hue
      #     battler_name   : new battler file name
      #     battler_hue    : new battler hue
      #--------------------------------------------------------------------------
      def set_graphic(character_name, character_hue, battler_name, battler_hue)
        @character_name = character_name
        @character_hue = character_hue
        @battler_name = battler_name
        @battler_hue = battler_hue
      end
    Der erste Parameter ist der neue Name des Charsets, der zweite vom Farbton, der dritte ist wieder der Name der Battlergrafik und der 4. wieder der dazugehörige Farbton.

  10. #30
    und das hatte geklappt

    (btw. warum bekomme ich immer so schnelle Antworten? Das ist fast schon mysteriös... Ein neuer Fall für Galileo Mystery xD)

  11. #31

    Frage bei Event

    Hallo
    Ich habe mir ein Palast erstellt bei dem ich König bin. Und eine Stadt hab ich mir erstellt mit Einkaufsläden.
    Dann habe ich mir einen Butler erstellt bei dem man auf die Antwort "Steuern einnehmen" klicken kann. Dann habe ich verschiedene Läden(Waffenladen, Itemshop, Pension, Wirtshaus) auf die man danach klicken kann. Ich möchte es so machen, dass wenn man dan z.b. auf Waffenladen klickt man 1000 Gold erhält. Will aber nicht, dass man das die ganze Zeit machen kann sondern nur so jede Stunde. Und jetzt kommt endlich die Frage^^: wie kann ich das einstellen, das ich einstellen kann das man nur jede Stunde 1000 Gold bekommt nur man hinklickt, nicht einfach so. Und wenn wenn noch keine Stunde vergangen ist und man auf Steuern einnehmen und z.b. auf Waffenladen klick soll so was kommen wie "du kannst nur jede Stunde Steuern einnehmen". Ich hoffe ihr könnt mir beschreiben wie ich das machen kann. Ich habe auch schon ein bisschen Erfahrung mit RPG Maker XP.

    ------------------------------------------------------------------------------
    Programmiere mit RPG Maker XP

  12. #32
    mach einen eigenen Thread auf, bittä ^,^

  13. #33
    So, erneut habe ich eine Frage ^,^
    Und zwar möchte ich, dass im laufendem Spiel eine Datei auf dem Desktop erstellt wird. Dabei ist es aber wichtig, dass die enstprechende .txt-Datei niergendswo im Game Ordner liegt. Dabei möchte ich den Text innerhalb Ruby selber bestimmen. Allerdings ist der Text bloß einzeilig.

    Wichtig ist auch, dass der Name der .txt Datei bestimmbar ist.
    Zum Beispiel wäre es sehr sinnvoll, dass die Datei den Namen »Blatt Papier.txt« heißt und den Inhalt: ,,Dies ist ein Blatt Papier"
    bekommt.

    Wie bereits gesagt ist es sehr wichtig, dass die Datei am Ende im Spieleordner nicht ist.
    Dabei ist es mir eigentlich egal, ob die Datei im ~/MeinProjekt/Graphics/texte/Blatt Papier.txt/ ist und am Ende, wenn das Spiel verschlüsselt wird, nicht mehr einsehbar ist, aber vom Maker aus auf dem Desktop kopierbar ist oder ob sie sogar ganz mit Ruby erstellt wird, was ja bei einem einfachen Text Dokument nicht schwer sein sollte.

  14. #34
    Wenn du eine .txt-Datei erstellen willst tust du folgendes:
    Code:
    PATHNAME = "E:/IrgendEineDatei.txt"
    MODE = "wb"
    TEXT= "Dies ist ein Test"
    
    f = File.open(PATHNAME, MODE)
    f.write(TEXT)
    f.close
    PATHNAME gibt den Pfad der Datei an. Du kannst die Datei an jede beliebige Stelle auf dem Computer speichern.
    Der MODE ist im Moment auf "wb" == write-binary gestellt. Damit kannst du einen Text in die Datei schreiben, jedoch nicht lesen. Außerdem wird der Inhalt der Datei bei jedem öffnen dadurch gelöscht.

    Das sollte bereits alles sein was du brauchst, nun musst du nur den Pfad finden auf welchen du die Datei kopieren möchtest.
    Willst du übrigens herausfinden auf welchem Pfad der RPG-Maker XP installiert ist machst du: File.expand_path(""), dadurch bekommst du den Pfad des RPG-Makers als String zurückgegeben. Zum Beispiel: "E:/Spiele/Maker/RPG-Maker XP/".

  15. #35
    Code (Ruby):
    PATHNAME =  
    "C:/users/ich/Desktop/Nachricht.txt"
    MODE = "wb"
    TEXT= "Dies ist ein Test"
     
    f = File.open(PATHNAME, MODE)
    f.write(TEXT)
    f.close

    Das klappt ja zum Teil.
    Aber die Sache ist die, sobald ich ja das an einen anderem PC mache, wo der Nutzername nicht ich ist, würde das ja nicht mehr gehen.
    Und für
    PATHNAME = "C:/users/Public/Desktop/Nachricht.txt"
    ist die Zeile zu kurz... Also geht das auch nicht.
    Wie stelle ich das am besten an?

  16. #36
    Zeile zu kurz?
    Du machst das per Eventcommand?
    Du kannst das ganze auch aus Teilstrings zusammen setzen:
    a = "C:/users/"
    b = "Public/Desktop"
    c = "/Nachricht.txt"
    d = a+b+c
    Und schon kann man der kurzen Zeile entgegen kommen.

    Es sollte aber wahrscheinlich auch einen Weg geben den Benutzernamen zu erfassen, im schlimmsten Fall über WinApi. Damit kenne ich mich allerdings nicht aus.

  17. #37
    In Ruby gibt es dafür das Objekt ENV, das Zugriff auf die Umgebungsvariablen des OS bietet.
    Für den Desktop kann man schreiben:
    Code:
    path = ENV['USERPROFILE']+'/Desktop/Nachricht.txt'

  18. #38
    bei mir klappt aber:
    Code (ruby):
    a = "ENV['USERPROFILE']"
    b = "+'/Desktop/Nachricht.txt'"
    c = a+b
    PATHNAME = c
    MODE = "wb"
    TEXT= "Dies ist ein Test"
     
    f = File.open(PATHNAME, MODE)
    f.write(TEXT)
    f.close
    nicht.

  19. #39
    Code:
    a = ENV['USERPROFILE']
    b = "/Desktop/Nachricht.txt"
    PATHNAME = a+b
    MODE = "wb"
    TEXT= "Dies ist ein Test"
    
    f = File.open(PATHNAME, MODE)
    f.write(TEXT)
    f.close

  20. #40
    klappt perfekt. Danke ^,^

Berechtigungen

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