• Anmelden

1

Dienstag, 30. April 2013, 13:10

Variabeln Anzeigen (Farbe)

In letzter Zeit habe ich das Gefühl, euch, die Community, mit Script-Anfragen nur so zu zubomben, allerdings bin ich in einer Phase in welcher mein Projekt an Komplexität annimmt. Wer helfen kann, kanns, wer nicht halt nicht :D...Wie auch immer...

Ich habe bereits von "The King" vor einiger Zeit ein wichtiges Script zur Zahlendarstellung von Game Varaibeln erhalten. Dieses auch schon mächtig eingepflegt in mein Gegenstandsmenü. Ebenso bei einigen Gegenständen. Klappt super. Nun mache ich mich an das Ausrüstungsmenü und dort benötigt es eine sehr große Menge an Zahlendarstellung. Was hinzu kommt, ist das erhöhen eines Wertes durch eine Ausrüstung, was ich genau wie in beinahe in jedem Standard RPG Spiel auch farblich unterstützen möchte. Das heißt Werteerhöhungen grün zu markieren. Wertsenkungen hingegen rot - bei einem Ausrüstungswechsel.

Folgendes Script zeigt über im Picture ordner befindliche Zahlenbilder, jene im Spielkontext an.
Nun meine Frage kann einer das Script soweit editieren, dass auf Abfrage ein anderes Bild für eine Zahl angezeigt werden kann. Dass ich noch die Farbe der anzuzeigenden Zahl bestimmen kann.
Andererseits kann man vielleicht eine Hue-Funktion einbauen? Hat noch jemand eine passende Idee?
Über Unterstützung würde ich mich sehr freuen

Hier das Script
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#==============================================================================
#
$SLOTS = 10
$MAX_STELLEN = 4
$BILD_BREITE = 15
#
#==============================================================================
# * Erweiterung der Klasse um den Scheinspeichers für Bilder 
#   auf der Karte zu erweitern.
#==============================================================================
class Game_Screen
  attr_reader   :numbers
  attr_accessor :number_slot
  #--------------------------------------------------------------------------
  # * Erweiterung des Scheinspeichers für Bilder auf der Karte
  #--------------------------------------------------------------------------
  alias initialize_thndrblt23 :initialize
  def initialize
    initialize_thndrblt23
    @numbers = []
    @number_slot = {}
    for i in 0..($SLOTS*$MAX_STELLEN-1)
      @numbers.push(Game_Picture.new(i+1))
    end
  end
  #--------------------------------------------------------------------------
  # * Update des erweiterten Scheinspeichers
  #--------------------------------------------------------------------------
  alias update_thndrblt23 :update
  def update
    update_thndrblt23
    for i in 0...@numbers.size
      @numbers[i].update
    end
  end
  #--------------------------------------------------------------------------
  #   type 
  #   0 = left with 0
  #   1 = left without 0
  #   2 = right with 0
  #   3 = right without 0 
  #--------------------------------------------------------------------------
  def show_number(x, y, var_id, slot, type)
    value = $game_variables[var_id]
    digits = stellen(value)
    if type == 0 or type == 2
      limit = $MAX_STELLEN
    elsif type == 1 or type == 3
      limit = digits
    end
    for i in 0...limit
      place = 10**((type<=1)?limit-i-1:i)
      n = value / place % 10
      set_at(x+i*$BILD_BREITE*((type<=1)?1:-1)-$BILD_BREITE*((type<=1)?0:1), 
          y, i+$MAX_STELLEN*slot, n)
    end
    @number_slot[slot] = [x, y, var_id, type]
  end
  #--------------------------------------------------------------------------
  def refresh(slot=nil)
    @numbers.each_index{|i| @numbers[i].erase}
    @number_slot.each_pair do |key, value|
      if slot == key
        show_number(value[0], value[1], value[2], key, value[3])
        break
      else
        show_number(value[0], value[1], value[2], key, value[3])
      end
    end
  end
  #--------------------------------------------------------------------------
  def stellen(zahl)
    for i in 1..9
      return i if (zahl % 10**i) == zahl
    end
    return 1
  end
  #--------------------------------------------------------------------------
  def set_at(x, y, nr, value)
    @numbers[nr].show(value.to_s, 0, x, y, 100, 100, 255, 0)
  end
  #--------------------------------------------------------------------------
  def hide_number(slot=nil)
    if slot.nil? == true
      @number_slot = {}
      @numbers.each_index{|i| @numbers[i].erase}
    else
      for i in ($MAX_STELLEN*slot)...($MAX_STELLEN*(slot+1))
        @numbers[i].erase
      end
      @number_slot[slot] = nil
    end
  end
end
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  alias initialize_thndrblt23 :initialize
  def initialize
    initialize_thndrblt23
    for i in 0...$game_screen.numbers.size
      @picture_sprites.push(Sprite_Picture.new(@viewport2,
            $game_screen.numbers[i]))
    end
  end
end
 
#==============================================================================
class Interpreter
  #--------------------------------------------------------------------------
  alias command_122thndrblt23 command_122
  def command_122
    for i in @parameters[0]..@parameters[1]
      $game_screen.number_slot.each_pair do |key, value|
        if value[2] == i
          $nr_need_refresh = true
          break
        end
      end
    end
    command_122thndrblt23
  end
end
#==============================================================================
class Scene_Map
  alias update_thndrblt23 update
  def update
    if $nr_need_refresh == true
      $game_screen.refresh
      $nr_need_refresh = false
    end
    update_thndrblt23    
  end
end
#==============================================================================
#                                                   scripted by thunderbolt256
#==============================================================================
zum Lesen den Text mit der Maus markieren


Danke im Vorraus Gruß Suirat

Kagurame

Alopex Lagopus

Motto: Ich Böse, Du Teufel

  • Nachricht senden

2

Mittwoch, 1. Mai 2013, 03:05

Am besten hängst du eine Demo an, welche das vorhandene Skript in seiner Funktion demonstriert...
Bild

  • Hallo

    Tabs klicken unso, ne?
  • Lyric

    Meine schwarze Liste, beginnt mit einem Satz:
    "Wer zuletzt lacht, lacht am besten!", und am Ende ist noch Platz.
    Auf der Liste meiner Feinde, ist auch für euch noch Platz
    Wer zuletzt lacht, lacht am besten!
    Merkt euch diesen Satz!

    Ode an die Feindschaft von Saltatio Mortis

  • Outtakes

    • Nummer 3
      20.09.2012 - 19:46
      "Yah, ich bin ihre Motivazin." "Motivazin - gibts das jetzt in der Apotheke rezeptflichtig?"
    • Ich mag Kekse
    • Nummer 2
      08.09.2012 - 01:29 Uhr
      "Die Erlebnismacher zu Hannovre - Exlibre - ääääh... Excalibur"

      *Lachflash*
    • Nummer 1
      07.09.2012 - 22:58 Uhr
      *Bööarps* - Die Erlebnismacher zu Hannovre - Excalibur... "Mahlzeit... also... doch nicht Mahlzeit... war nur die Website"
      "Ich hab gerülpst -.-" "Du hast was?" *LACHFLASH*
      "Nicht dein Ernst, oder?" "DOCH!" *LACHFLASH second tour*
  • Profile

    Bild
  • Ich

    Dass bin ich:

    Maker: RPG-XP, RPG-VX
    Story:
    Für andere mehr als für mich: 60%

    Grafik:
    Ich werde besser: 35%

    Pixeln:
    Ich stehe an den Anfängen: 7%

    Mapping:
    Es fehlen nur noch (alle) Feinheiten: 67%

    Scripting:
    Informatiker, mittlerweile auch andere Sachen am skripten: 93%
  • Neues aus der SB

    Neues aus der SB:

    Spoiler: Die Camper
    (03:41:36) Kagurame: n8 du
    (03:41:37) Irrlicht: Nacht Mozilla
    (03:41:47) MozillaBabybird: Kagu: der witz war flach
    (03:42:01) Kagurame: welcher witz?
    (03:42:14) Heatra: geh nicht benji
    (03:42:21) Heatra: spiel lieber ats2 :D
    (03:42:25) MozillaBabybird: nacht leute ^^ ijemand sollte diesen verlauf im studio bash posten, damit die mal wissen wer die echten camper hier sind :D
    (03:42:35) Kagurame: ich bin scripten
    (03:42:38) MozillaBabybird: Heat: tut mir sorry xD
    (03:42:40) Kagurame: ich mach das...^^
    (03:42:48) MozillaBabybird: bis .... mittag ?
    (03:42:49) Heatra: ^^
    (03:42:55) MozillaBabybird: ja mittag dürfte passen
    (03:42:56) MozillaBabybird: :D
    (03:42:57) Kagurame: ^^
    (03:43:02) Heatra: ich steh morgen eh erst um 5 uhr mittags auf
    (03:43:07) Kagurame: bis heute
    (03:43:11) Steve: MozillaBabybird verlässt den Chat.
    (03:43:15) Kagurame: ich so um 3
    zum Lesen den Text mit der Maus markieren


    Spoiler: Die Informatiker vom Dienst
    (03:05:32) Ankou: bist du dir SICHER, dass es die Performance an der Stelle kritisch ist und c.a. 30% sind KEIN großer Unterschied?
    (03:05:41) Ankou: oh
    (03:05:45) Ankou: okay
    (03:06:21) Asandril: Oh Ha was habt Ihr gerade für ein Thema?
    (03:06:41) Ankou: das ist in der Tat eine performancekritische angelegenheit, aber ich denke dennoch nicht, dass das die Dinge sind auf die du dein Hauptaugenmerk richten solltest.
    (03:07:01) Heatra: maschine
    (03:07:01) Ankou: derartige Mikrooptimierungen werden Performanceprobleme sogut wie niemals beseitigen können
    (03:07:01) Irrlicht: anhand der Tatsache dass es 20 000 000 Durchläufe waren nicht wirklich :-/
    (03:07:08) Ankou: änder was konzeptionelles oder lass es bleiben.
    (03:07:31) Ankou: evtl. kannst du mehr der Interpretation nach vorne verlagern
    (03:08:06) Ankou: aber solche Dinge zu versuchen wie die case Abfragen durch send zu ersetzen in der Hoffnung ein paar Prozent einzusparen bringens dir nicht
    (03:08:26) Asandril: Bin ich gerade hier in einem Kurs gelandet ..
    (03:08:36) Irrlicht: hatte mal in Erwägung gezogen die Befehle evtl. schonmal etwas "vorzuinterpretieren", aber das dürfte dann mehr Speicher verbrauchen als es Geschwindigkeit bringt...
    (03:09:11) Ankou: Asandril: ja, erstaunlich, angetrunken an Silvester über so etwas zu reden
    (03:09:28) Heatra: -> lampenfieber
    (03:09:40) Asandril: Kann ich nur beipflichten.
    (03:09:46) Irrlicht: atm bin ich mir nicht sicher was genau den doch vergleichsweise erheblichen Lag von Parallel-Process-Events verursacht (oder ob es einfach an der gesammten Masse liegt) wenn ich bei 2 000 000 solcher Durchläufe unter einer Sek. bleibe...
    (03:09:57) Ankou: Irrlicht: das ist durchaus üblich. Speicher gegen Geschwindigkeit einzustauschen ist sehr populär und bringt oft viel
    (03:11:23) Irrlicht: mal schaun :)
    zum Lesen den Text mit der Maus markieren


    Spoiler: Auch noch später^^
    (03:32:35) (Kagurame_AnkündigungImForumMach): es da ne methode wie beim xp?
    (03:32:48) Irrlicht: Cache.system("Iconset")
    bekommst das Iconset
    (03:32:50) (Kagurame_AnkündigungImForumMach): brauche es dringend, aber nix gefunden bisher
    (03:33:01) (Kagurame_AnkündigungImForumMach): und dann per id?
    (03:33:06) (Kagurame_AnkündigungImForumMach): drauf zugreifen?
    (03:33:07) Irrlicht: Index berechnet sich einfach aus
    x = index % 16
    y = index / 16
    (03:33:17) Irrlicht: afaik warens 16 nebeneinander^^
    (03:33:28) (Kagurame_AnkündigungImForumMach): ok, danke.
    (03:33:51) (Kagurame_AnkündigungImForumMach): ich glaub ich scripte dann noch ein bissl
    (03:34:01) Steve: (Kagurame_AnkündigungImForumMach​) heißt jetzt Kagurame.
    (03:34:04) Irrlicht: im XP hast die einzelnen Icons anhand des Namens aus dem Icon-Ordner aufgerufen
    (03:34:09) Steve: Kagurame ist nun Scripten!
    (03:34:17) Irrlicht: (geht natürlich im VX auch, aber wozu gibts das Iconset)
    (03:34:23) Kagurame: ja ich weis, daher war ich heut mittag verwirrt
    zum Lesen den Text mit der Maus markieren

Ähnliche Themen

Social Bookmarks