RPG-Maker Quartier

Hier dreht sich alles um die RPG-Maker-Reihe von ASCII/Enterbrain. Der RPG-Maker ist ein Tool, mit dem du dir dein eigenes kleines Rollenspiel erstellen kannst. Du findest hier alles, was du dazu brauchst. Aber natürlich umfasst die Community noch mehr!
Aktuelle Zeit: Di Mär 03, 2020 2:56

Alle Zeiten sind UTC + 1 Stunde



Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
Offline
Alex
Alex
Beiträge: 20
Alter: 31
Wohnort: Bergisch Gladbach
BeitragVerfasst: Do Aug 23, 2012 17:27 
Hi Zusammen,

ich habe folgendes Problem und gleich einhergehend auch eine große Bitte,
ich erstelle ein eigenes Menü mit Pics, da ich kein geübter Scripter bin habe ich das Menü bisher auf 2 Bilder (HG und Cursor) beschränkt; die anzuzeigenden Items möchte ich über ein kleines Script als Sprites - Bitmaps anzeigen lassen
um nicht die Übersicht mit den Pictures zu verlieren.

In dem Script "Icons Anzeigen" sind die Vorgänge zu finden. Jeweils Switches, dann falls true das und das bitmap - wird angezeigt.
Sehr simpel.

Nun hat der "Icon Hud" die z.Priorität 201, da diese über der Picture Priorität 36 liegt.
Das ist das Problem. Ich möchte dass die Icons die das Script anzeigt über dem Bild des Hintergrundes jedoch unter dem Cursor-Bild liegen.
Das heißt Unterste Ebene : Bild 35 Hintergrund, dann Icon Hud (z = 201), und dann Bild 36 (Cursor).
Ich habe mir überlegt, dass man den Pictures doch auch eine Z = Priorität zuweisen können müsste, bin jedoch bis jetzt scripttechnisch ohne Erfolg geblieben und hab bereits in einem anderen Forum nachgefragt, in welchem mir mit sehr viel Enthusiamus leider jedoch ebenfalls
erfolglos "geholfen" wurde.

Daher hier die Frage kann man den z Wert eines Pictures seperat ändern? Über $screen.game_pictures(36).z = 8000 und wenn möglich auch mit erläutertem Ergebnis,

Jeder Scripter fasst sich bestimmt an den Kopf, warum ich den Cursor nicht Scripte, aber wie gesagt ich bin ein absolut ungeübter Scripter und würde meinen "Workflow" um extrem unterbrechen müssen.

Ich werde das Projekt in den Anhang hängen um das Problem genauer erfassbar zu machen, bzw. hier:

-----Das Projekt im Anhang---- bzw. hier: http://www.multimediaxis.de/threads/136008-Z-Priorit%C3%A4t-eines-Pictures?p=2996681#post2996681

(Erst die Fledermaus anklicken, dann Esc drücken, dann müsste das Problem erkannt werden)

Ich danke schonmal im Vorraus und würde mich sehr über eine Antwort freuen.

Gruß JR


Nach oben
 Profil  
Mit Zitat antworten  
Offline
Official Oldschool
Official Oldschool
Benutzeravatar
Beiträge: 8917
Alter: 31
Wohnort: BRD, Thüringen
BeitragVerfasst: Do Aug 23, 2012 20:39 
Picture-Priorität ändern sollte kein großer Eingriff sein:
Code:
class Game_Picture
  attr_accessor :z
end
class Sprite_Picture
  alias update_z update
  def update
    update_z
    self.z = @picture.z || @picture.number
  end
end


Dann kannst du den Z-Wert folgendermaßen ändern
Code:
$game_screen.pictures[36].z = 8000


Um den Z-Wert wieder abhängig von der Picture-Id zu machen, schreibst du
Code:
$game_screen.pictures[36].z = nil

_________________


Nach oben
 Profil ICQ  
Mit Zitat antworten  
Offline
Alex
Alex
Beiträge: 20
Alter: 31
Wohnort: Bergisch Gladbach
BeitragVerfasst: Do Aug 23, 2012 21:28 
Hey,

erst mal vielen Dank für die Antwort,

leider habe ich so einen Weg auch schon mal versucht und entweder bin ich einfach nicht in der Lage das richtig
einzustellen oder irgendwo ist noch ein kleiner Haken,
das Script vor, hinter meinem Icon Anzeigen Script,
der Befehl vor oder hinter der Picture anzeige,
der Cursor will einfach nicht vor die Icons ob der Cursor z = 202 oder z = 200000...

Das mag vlt etwas viel verlangt sein,
jedoch bin ich echt mit meiner laienhaften rumprobierei am Ende,
wenn du Interesse Zeit und Lust hast könntest du vlt mal in dem Projekt nachschauen
WAS die Ursache für dieses nicht funktionieren ist?

VIelen Danke für deine bisherige Hilfe,

Grüße JR


Nach oben
 Profil  
Mit Zitat antworten  
Offline
Official Oldschool
Official Oldschool
Benutzeravatar
Beiträge: 8917
Alter: 31
Wohnort: BRD, Thüringen
BeitragVerfasst: Do Aug 23, 2012 22:11 
Okay, jetzt weiß ich was du meinst. Das Problem ist, dass dein HUD und deine Pictures in verschiedenen Viewports liegen. Pack dein HUD in dasselbe Viewport wie deine Pictures, dann klappt auch alles.
Code:
class Spriteset_Map
  alias update_icon update
  def update
    (@icon_hud ||= Icon_Hud.new(@viewport2)).update
    update_icon
  end
 
  alias dispose_icon dispose
  def dispose
    @icon_hud.dispose if @icon_hud
  end
 
end
class Icon_Hud < Sprite
  def initialize(viewport=nil)
    super(viewport);
    self.z = 34 #Icon_Hud Priorität
    self.x = 0 # Icon_Hud von links nach recht positionieren
    self.y = 0 # Icon_Hud von oben nach unten positionieren
    self.bitmap = Bitmap.new(640, 480) # Icon_Hud vergrößern/verkleinern
    update
  end

  # gibt einen Array mit der aktuellen Switch-Belegung zurück
  def switches
    (1002..1006).map {|i| $game_switches[i] } << $game_switches[15]
  end

  def update()
    current_switch_assignment = switches
    # wenn Switch-Belegung sich geändert hat, refreshe HUD
    if @switches != current_switch_assignment
      @switches = current_switch_assignment
      refresh
    end
  end

  # ... hier kommt dann deine refresh Methode
end


Den anderen Kram (HUD-Objekt in Scene_Map, refresh-Aufruf im Interpreter) kannst du rausnehmen.

Danach musst du dem HUD einfach einen Z-Wert geben, der unter dem Z-Wert deines Menücursors aber über dem Z-Wert deines Menü-Backgrounds liegt.

btw. warum zeigst du den HUD überhaupt per Ruby an, wenn du alles andere per Pictures und Event-Script machen möchtest? Ach, und noch ein Hinweis: Verwende keine Umlaute in deinen Dateinamen. Das kann ganz schnell schief gehen, weil Betriebssysteme leider selbst im 21 Jahrhundert noch nicht mit Zeichenkodierungen umgehen können.

_________________


Nach oben
 Profil ICQ  
Mit Zitat antworten  
Offline
Alex
Alex
Beiträge: 20
Alter: 31
Wohnort: Bergisch Gladbach
BeitragVerfasst: Fr Aug 24, 2012 16:52 
Hey KD,

nochmals Vielen Dank.
Ich habe noch eine Frage, was genau passiert mit den Icons, ich habe das Script bei mir bis jetzt leider noch nicht zum laufen bekommen.
liegt denke ich mal meinem expertisen Fachwissen...

Ich habe den Scene_Map Teil gelöscht und mit dem Spriteset Teil ersetzt
und versucht meine If-Abfragen einzubauen, leider weiß ich nicht was deine If-Abfragen genau machen.
Der Sinn dahinter war, Held erhält neues Item (Variable 1006) und dieses wird dann über das Script angezeigt.

Das heißt ich muss alle Switches einzeln abfragen, oder ? Wenn ich die Script-Sprache richtig verstehe, was ich bezweifle.

Als ich den Interpreter gelöscht hab, einiges ausgetauscht und das Script lief, wurden keine Icons angezeigt.

Ich lasse die Items im Menü nicht über Pics anzeigen, weil es sein kann, dass der Spieler ein Item nicht erhällt und dieses somit "ausgelassen" wird bei der Anzeige und ich will nicht über die 50 Pictures kommen. Würde ich die Pictures alle einzeln anzeigen müsste ich mind. 42 Bilder anzeigen lassen, würde ich alle Items mit einem Picture anzeigen müsste ich unendlich viele Möglichkeiten an Pictures haben, da der Held wie gesagt selber bestimmt, welches Items er findet und welche nicht.
Daher ist die Script Methode die effizienteste denke ich.

Du hast echt schon viel für mich getan, der Hinweis auf den Viewport ist auch super,

Kannst du mir den gefallen tuen und das noch mal etwas kommentieren, bzw. für dume posten?

Falls nicht, kein Problem und danke für deine Hilfe!

Grüße JR


Nach oben
 Profil  
Mit Zitat antworten  
Offline
Official Oldschool
Official Oldschool
Benutzeravatar
Beiträge: 8917
Alter: 31
Wohnort: BRD, Thüringen
BeitragVerfasst: Fr Aug 24, 2012 18:11 
Zitat:
Ich habe den Scene_Map Teil gelöscht und mit dem Spriteset Teil ersetzt
und versucht meine If-Abfragen einzubauen, leider weiß ich nicht was deine If-Abfragen genau machen.

Theoretisch musst nur die refresh Methode von dir in die Klasse einfügen. Aber scheinbar funkt hier irgendeines deiner anderen unzähligen Scripte dazwischen. Setz mal dein Icons Anzeigen Script direkt über Main, dann sollte es gehen.
Die If-Abfrage in meinem Script-Code prüft, ob sich die Switches 15 oder 1002 bis 1006 geändert haben. In dem Fall wird die refresh Methode aufgerufen. Das ist imo sauberer als deine Vorgehensweise, bei der jede Switch-Änderung die refresh Methode aufruft (Sprites sollten generell nicht von "außen" manipuliert werden).

Zitat:
Das heißt ich muss alle Switches einzeln abfragen, oder ?
Nö. Sowas macht man über Schleifen. Statt Switches kannst du "echte" Items verwenden. Die Grafiken der Items legst du über das Icon-Attribut in der Datenbank fest.

Kannst du mal genauer ausführen wie dein Menü genau aussehen soll? Was hat es mit den Taschen auf sich, welche Items sollen überhaupt angezeigt werden?

_________________


Nach oben
 Profil ICQ  
Mit Zitat antworten  
Offline
Alex
Alex
Beiträge: 20
Alter: 31
Wohnort: Bergisch Gladbach
BeitragVerfasst: Fr Aug 24, 2012 19:23 
Zum Menü:

Rechts in der Leiste befinden sich 5 Taschen, erhält man eine dieser Taschen (Pilztasche) so kann man von nun an fleißig Pilze sammeln gehen. Das heißt für die Tasche benötige ich ein Anzeige-Bild, nun wählt man im Menü diese Tasche auf und ein neues Fenster öffnet sich (der rest bleibt im Hintergrudn noch sichtbar) indem 15 leere Kästchen zu finden sind, die bei Fund eines Pilzes mit einem der 15 Pilze bestückt werden, d.h. für jede Tasche bräuchte ich 15 weitere ANzeige Bilder d.h. 15 x 5 = 75 + die 36 Anzeige Bilder, die keine Verbrauchsgegenstände oder besser gesagt Sammelgegenstände sind, sondern einfach Items wie Notitzbuch, Kochtopf etc. die werden in den 36 leeren Kästchen Angezeigt die sich in der Mitte des Geg.-Menüs befinden. Das wären 111 Anzeige bilder d.h. 111 Switches nur für das Inventar, und die zu findende Ausrüstung wird sich im Ausrüstungsmenü tummeln, und einige Variablen Bilder möchte ich auch noich in das Status-Menü packen, daher wäre es mir lieb wenn die Script-Art d.h. jedes Item bzw. jeder Switch einzeln im Script zu finden ist um in der Masse nicht den Überblick zu verlieren. Wenn du alle Items in einen Array packst, so musst du dort doch ständig die Nummern ändern oder?

Switch 15 ist nur dafür da per Event zu bestimmen wann die Items angezeigt werden.
D.h. If 15 = true Items werden angezeigt
wenn jetzt kein anderer Switch aktiviert ist, ist das Menü halt leer...
If 1002 = true das und das wird angezeigt usw.
Das wäre mir persönlich Lieber

Natürlich kannst du sehr gute Ratschläge und Hinweise bzgl. der Presormance geben denke ich mal,
Nur da ich mich kenne und hin und wieder eine Pause beim makern brauche, will ich alles so genau kommentieren wie möglich damit ich einfach immer wieder reinfinde.

Ich weiß mit der Masse an Scripten ist es echt ein problem und das ding ist, dass sind ja längst nicht alle, die ich benötige da kommen noch sachen wie ams, skip titel, particle engine und was weiß ich nicht alles hinzu.

Meine Hoffnung war diesbezüglich dass ich ab einem gewissen Stadium des Projektes, wenn man damit schon ein bisschen etwas anfangen kann d.h. wenn es den Leuten eventuell gefallen könnte einen guten Scripter ran lasse und ihn bitte die Codes soweit es geht zu kürzen oder mir änderungsvorschläge zu machen, daher bin ich auch froh über jeden tip den du mir gibst.

Ich hoffe auch dass ich mit der Zeit mehr ins scripten rein komme, wobei ich weiß, dass das eher unwahrscheinlich sein wird, in relativ kurzer zeit (1-2 Jahre denke ich).

Naja ich werde mal ein bisschen rumschieben und danke dir ehrlich nochmal für die schnelle und vor allem gute hilfe


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de