• Anmelden

Xedilius

Ankömmling

  • »Xedilius« ist der Autor dieses Themas

Motto: Das House gewinnt immer

  • Nachricht senden

1

Dienstag, 26. Oktober 2010, 20:31

Questlog 3.0. - Aktualisierungsmeldung?

Liebe Leute,

ich hätte da mal eine Frage...

Ich verwende das Questlog 3.0 von Caesar

Dieses konnte ich erfolgreich in das Spiel integrieren - sogar mit eigenen Menübutton und dem zusätzlichen Shortcut 'F5'.

Nun wär es allerdings ziemlich interessant, eine automatische Bestätigung erscheinen zu lassen, sobald etwas Neues dazu kommt oder sich etwas aktualisiert.
Ich dachte mir das so, dass unten in der rechten Ecke ein kleiner Schriftzug kommt, der sich automatisch nach 8 Sekunden ausblendet:

Quest hinzugefügt/aktualisiert:
*Name der Quest*

Eventuell könnte man sich das Einblenden der Ortanamen aus dem 1.Teil von TOA zu Hilfe nehmen:
(TonsOfAddons1.rb by Blizzard, Fantasist, NAMKCOR, Zan, game_guy, TerreAqua (08.10.2009))#
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Location Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
	else
  	return nil
	end
	# if text should be used
	if name == nil
  	# create bitmap
  	bitmap = Bitmap.new(320, LOCATION_SIZE + 16)
  	# set up font style
  	bitmap.font.name = LOCATION_FONT
  	bitmap.font.size = LOCATION_SIZE
  	bitmap.font.bold = LOCATION_BOLD
  	bitmap.font.italic = LOCATION_ITALIC
  	bitmap.font.color = LOCATION_COLOR
  	# draw map name
  	bitmap.draw_text(0, 8, bitmap.width-16, LOCATION_SIZE+8,
      	$map_names[$game_map.map_id], 2)
	else
  	# cache image file
  	bitmap = RPG::Cache.picture("Names/#{name}")
	end
	return bitmap
  end
 
end  
 
#==============================================================================
# Game_System
#==============================================================================
 
class Game_System
 
  # setting all accessible variables
  attr_accessor :map_name_id
  attr_accessor :name_timer
  #---------------------------------------------------------------------------- 
  # initialize
  #  Added helping variables for convenience.
  #---------------------------------------------------------------------------- 
  alias init_names_later initialize
  def initialize
	init_names_later
	@map_name_id = @name_timer = 0
  end
 
end
 
#==============================================================================
# Name_Sprite
#==============================================================================
 
class Name_Sprite < Sprite
 
  # setting all accessible variables
  attr_accessor :timer
  #---------------------------------------------------------------------------- 
  # initialize
  #---------------------------------------------------------------------------- 
  def initialize(viewport = nil)
	super
	# set timer depending on if same map as when the last time
	if $game_system.map_name_id == $game_map.map_id
  	@timer = $game_system.name_timer
	else
  	@timer = 0
	end
	# if appearing
	if @timer < 16
  	self.opacity = @timer * 15
	# if disappearing
	elsif @timer > 16 + 40 * LOCATION_DISPLAY_TIME
  	self.opacity = 255 - (@timer - 16 - 40 * LOCATION_DISPLAY_TIME)* 15
	end
	# store this map as old map
	$game_system.map_name_id = $game_map.map_id
	self.z = 6000
	# get text image or image
	self.bitmap = BlizzCFG.get_locimage
	# set x coordinate or delete depending on whether bitmap exists
	self.bitmap == nil ? self.dispose : self.x = 640 - self.bitmap.width
  end
  #---------------------------------------------------------------------------- 
  # dispose
  #  Added storing of timer value before removing.
  #---------------------------------------------------------------------------- 
  def dispose
	$game_system.name_timer = @timer
	super
  end
 
end
 
#==============================================================================
# Spriteset_Map
#==============================================================================
 
class Spriteset_Map
 
  attr_accessor :name
  #---------------------------------------------------------------------------- 
  # initialize
  #  Added the name sprite.
  #---------------------------------------------------------------------------- 
  alias init_name_later initialize
  def initialize
	init_name_later
	@name = Name_Sprite.new(@viewport1) if $game_system.LOCATION_NAMES
  end
  #---------------------------------------------------------------------------- 
  # update
  #  Added name sprite appearing/disappearing animation control.
  #---------------------------------------------------------------------------- 
  alias upd_name_later update
  def update
	# if sprite exists
	if @name != nil
  	# if sprite not disposed
  	unless @name.disposed?
    	@name.timer += 1
    	# if appearing
    	if @name.timer < 16
      	@name.opacity += 15
    	# if disappearing
    	elsif @name.timer > 16 + 40 * LOCATION_DISPLAY_TIME
      	@name.opacity -= 15
    	end
    	# if gone
    	if @name.opacity == 0
      	# remove completely
      	@name.dispose
      	@name = nil
    	end
  	else
    	# set to nil
    	@name = nil
  	end
	end
	upd_name_later
  end
  #---------------------------------------------------------------------------- 
  # dispose
  #  Added name sprite removal.
  #---------------------------------------------------------------------------- 
  alias dispose_name_later dispose
  def dispose
	dispose_name_later
	unless @name == nil
  	$game_system.name_timer = @name.timer
  	@name.dispose
	end
	@name = nil
  end
 
end
 
#============================================================================== 
# Scene_Title
#============================================================================== 
 
class Scene_Title
 
  #---------------------------------------------------------------------------- 
  # main
  #  Added setup of names hash.
  #---------------------------------------------------------------------------- 
  alias main_location_later main
  def main
	$map_names = load_data('Data/MapInfos.rxdata')
	$map_names.each_key {|key| $map_names[key] = $map_names[key].name}
	main_location_later
  end
 
end
zum Lesen den Text mit der Maus markieren


Das hier, ist denke ich, der Teil von Questlog, der für das Einfügen zuständig ist...
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
def add(quest, description="")
return add(Quest.new(quest, description)) unless quest.is_a?(Quest)
i = index(quest.title)
return @quests[i] = quest if i != nil
if INSERT_AT_TOP
# insert quest at top of the list
@quests.unshift(quest)
else
# insert quest at bottom of the list
@quests.push(quest)
end
end
zum Lesen den Text mit der Maus markieren


Ziel wäre es also, einen Aufruf im Questlog zu starten, der eine Anzeigefunktion aufruft.

Ich wäre euch sehr verbunden, wenn ihr mal schauen könntet, ob mein Wunsch im Bereich des Möglichen liegt und wie sich das machen lässt...

freundliche Grüße,
Arden-Sul

2

Montag, 1. November 2010, 04:52

Soll ein Bild angezeigt werden, oder einfach in der normalen Schriftart ein Text angezeigt werden?

Und, obwohl ich gern Scripte nutze, wäre es nicht einfacher, da die Questaktualisierung eh von einem Event vorgenommen wird, danach per ShowPicture ein hübsch designtes Bild mit entsprechender Nachricht und Nummer X anzuzeigen?
Danach einen Switch aktivieren, welcher wiederum die Bedinung eines CommonEvents ist, dass auf ParallelProgrss steht.
Das CommonEvent hat dann einen Wait Befehl von 160(?) Frames, danach per ErasePicture das eben angezeigte Bild Nummer X entfernen und den Switch, der Bedinung für dieses CommonEvent ist, wieder auf OFF stellen.

So könntest du das ganze, simple ohne Script umsetzen und für deine Bedürfnisse leicht anpassen.

Aber du kannst auch auf ein Script bestehen, dann wären aber noch diese Angaben praktisch:
Soll ein Bild aus dem Picture Ordner geladen werden, oder einfach ein weißes Kästchen anzeigen worein dynamisch der Questname gezeichnet wird?
Soll es bestimmte Optionen geben?
Manche Quest, wo eine solche Anzeige ausbleibt? Vielleicht irgendwelche grafischen Unterschiede bei der Anzeige, zwischen den Quests?

Xedilius

Ankömmling

  • »Xedilius« ist der Autor dieses Themas

Motto: Das House gewinnt immer

  • Nachricht senden

3

Montag, 1. November 2010, 20:26

Erstmal bedanke ich mich, dass sich jemand auf meine Anfrage gemeldet und hat und für den Denkanstoß mit dem Bild.

Nach dem gescheiterten Versuch am WE, das Skript selbst irgendwie mit 1% Ruby-Kenntnissen auf die Beine zu stellen (lang lebe die Sicherheitskopie) erscheint mir nun auch ein Bild als eine elegante Lösung...

Ich habe es eben grad ausprobiert und es funktioniert ganz gut. Zudem hab ich mir eine Ein-und Ausblendlogik schon zusammengedacht und werde nun deinen Vorschlag auch anwenden. Außerdem lassen sich auch noch andre Sachen so darstellen (besonders extravagante/variierende Schriftarten zum Beispiel, die sicher per Skripts nur schwerer darzustellen wären ^^) , fällt mir grad auf...
Nachdem ich das so jetzt gesehen habe, bin ich der Meinung, das an dieser Stelle ein Skript überflüssig wäre.

Der einzige Nachteil ist, dass man am Ende etliche Bilder hat, aber das ist mit Sprites und Battlern ja auch nicht anders, wenn man ein komplexes Spiel plant.

Ok, damit wäre das ja erledigt. :D

Dankesehr!

Ähnliche Themen

Social Bookmarks