• Anmelden
  • »Razziel²« ist der Autor dieses Themas

Motto: Yukkuri Shiteitte ne!

  • Nachricht senden

1

Dienstag, 2. Juni 2009, 20:06

Worldmap Scipt

Also wie der Titel schon sagt suche ich ein Worldmap Script.
Ich hab schon SuFu benutzt allerdings nichts gefunden.
Es ist eigentlich ganz einfach. Das Script ruft eine karte (Picture) auf.
AUf dieser karte kann amn dann sich durch die Punkte wählen und den Zielort festlegen.
Allerdings sollten Natürlich nicht alle Orte gleich betrettbar sein, was dann mit Switches abgeregelt werden sollte.
Script wird dann über Call Script aufgerufen.
Ich muss ehrlich sagen das ich versucht hab das Worldmap script aus Charon zu moden, ohne großen erfolg.
Drum bitte ich jemanden der mehr erfahrung mit RGSS hat, entweder mir ein neues zu scripten, oder das Script zu moden (Wobei ich mir nicht sicher bin, ob Sorata oder Thunderbolt was dagegen haben)
Freundliche Grüße, :Razziel²: Razziel²

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

2

Dienstag, 2. Juni 2009, 20:08

Weltkartenskript.7z

Musste ich gar nicht neu schreiben, hab ich irgendwann mal für Kratos gemacht : D
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

  • »Razziel²« ist der Autor dieses Themas

Motto: Yukkuri Shiteitte ne!

  • Nachricht senden

3

Dienstag, 2. Juni 2009, 20:14

Okey, danke.
Das ist genau das was ich brauche.
Du Erleuteter =3
Nur noch eine Sache:
Könntest du mich über die genau funktionsweise aufklären.
Damit ich ja nix falsch mache

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

4

Dienstag, 2. Juni 2009, 20:25

Gute Frage...
Anscheinend hab ich vergessen, das in die Comments zu schreiben^^
Ich weiß es auch nicht mehr :/
Zum Glück hab ich ne Demo gemacht Bild
Hier nochmal das SKript (alle zusammengefügt :)
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
176
177
178
179
180
181
# Um einen neuen Ort hinzuzufügen, schreibe $orte.push(ort)
# ort muss hierbei eine Instanz von Game_WorldmapOrt sein.
# Um eine Instanz zu erstelle, schreibe 
# ort = Game_WorldmapOrt.new(name, x, y, beschreibung, ort)
# Vorher müssen die Werte in Variablen festgelegt werden.
# name = "Dies ist der Name"
# x, y = 50, 200   (Pixelkoordinaten auf der Map)
# beschreibung = "Ein Testort für die Demo :3"
# ort = [Mapid, X-Tile, Y-Tile]
# Um die Weltkarte aufzurufen schreibe $scene = Scene_Worldmap.new
 
class Game_WorldmapOrt
  attr_reader :name
  attr_reader :xy
  attr_reader :beschreibung
  attr_reader :map_id
  attr_reader :x
  attr_reader :y
 
  def initialize(name,x,y,beschreibung,ort)
	@name = name
	@xy = [x,y]
	@beschreibung = beschreibung
	@map_id = ort[0]
	@x,@y = ort[1],ort[2]
  end
end
 
class Sprite_WorldmapOrt
  attr_accessor :sprite
 
  def initialize(x,y)
	@sprite = Sprite.new
	@sprite.bitmap = RPG::Cache.picture("Punkt")
	@sprite.x = x
	@sprite.y = y
  end
end
 
class Window_Description < Window_Base
  def initialize(beschreibung)
	super(300,330,300,150)
	self.opacity = 155
	self.contents = Bitmap.new(300-32,150-32)
	refresh(beschreibung)
  end
 
  def refresh(beschreibung)
	self.contents.clear
	rect = Rect.new(0,0,300-32,150-32)
	self.contents.draw_text(rect,beschreibung)
  end
end
 
class Scene_Worldmap
  def main
	@map = Sprite.new
	@map.bitmap = RPG::Cache.picture("Weltkarte")
	@cursor = Sprite.new
	@cursor.bitmap = RPG::Cache.picture("Cursor")
	@cursor.z = 100
	@orte = $orte
	o = @orte[0]
	@cursor.x = o.xy[0]-@cursor.x-@cursor.bitmap.width/2
	@cursor.y = o.xy[1]-@cursor.y-@cursor.bitmap.height
	@window_description = Window_Description.new(o.beschreibung)
	s = []
	for i in @orte
  	s << i.name
	end
	@window_command = Window_Command.new(140,s)
	@window_command.y = 60
	@window_command.opacity = 155
	@sprites = []
	for i in @orte
  	x = i.xy[0]
  	y = i.xy[1]
  	a = Sprite_WorldmapOrt.new(x,y)
  	@sprites << a
	end
	@cursor.x += @sprites[0].sprite.bitmap.width/2
	@cursor.y += @sprites[0].sprite.bitmap.height/2
	Graphics.transition
	loop do
  	Graphics.update
  	Input.update
  	update
  	if $scene != self
    	break
  	end
	end
	Graphics.freeze
	@map.dispose
	for i in @sprites
  	i.sprite.dispose
	end
   @window_description.dispose
   @window_command.dispose
   @cursor.dispose
  end
 
  def update
	@window_command.update
	x = move_x
	y = move_y
	@cursor.x += x
	@cursor.y += y
	if @oldindex != @window_command.index
  	@oldindex = @window_command.index
  	o = @orte[@window_command.index]
  	@window_description.refresh(o.beschreibung)
	end
	if Input.trigger?(Input::C)
  	$game_system.se_play($data_system.decision_se)
  	ort = @orte[@window_command.index]
  	$game_map.setup(ort.map_id)
  	$game_player.moveto(ort.x,ort.y)
  	$scene = Scene_Map.new
	end
  end
 
  def move_x
	ort = @orte[@window_command.index]
	x = ort.xy[0]
	cursorx = @cursor.x+@cursor.bitmap.width/2-@sprites[0].sprite.bitmap.width/2
	x -= cursorx
	if x == 0
  	return 0
	end
	if x < 0
  	x *= -1
  	x = Math.sqrt(x)
  	x *= -1
	else
  	x = Math.sqrt(x)
	end
	return x.round
  end
 
  def move_y
	ort = @orte[@window_command.index]
	y = ort.xy[1]
	cursory = @cursor.y+@cursor.bitmap.height-@sprites[0].sprite.bitmap.height/2
	y -= cursory
	if y == 0
  	return 0
	end
	if y < 0
  	y *= -1
  	y = Math.sqrt(y)
  	y *= -1
	else
  	y = Math.sqrt(y)
	end
	return y.round
  end
end
 
class Scene_Title
  alias old_neobahamut_worldmap_command_new_game command_new_game
  def command_new_game
	$orte = Array.new(0)
	old_neobahamut_worldmap_command_new_game
  end
end
 
class Scene_Load < Scene_File
  alias old_neobahamut_worldmap_read_save_data read_save_data
  def read_save_data(file)
	old_neobahamut_worldmap_read_save_data(file)
	$orte = Marshal.load(file)
  end
end
 
class Scene_Save < Scene_File
  alias old_neobahamut_worldmap_write_save_data write_save_data
  def write_save_data(file)
	old_neobahamut_worldmap_write_save_data(file)
	Marshal.dump($orte,file)
  end
end
zum Lesen den Text mit der Maus markieren
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

  • »Razziel²« ist der Autor dieses Themas

Motto: Yukkuri Shiteitte ne!

  • Nachricht senden

5

Dienstag, 2. Juni 2009, 20:31

Okey Danke. Klappt alles, ist sogar alles Kompatibel mit den anderen Scripts.
Kleine Sache Noch. kann man die Punkte auch entfernen?

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

6

Dienstag, 2. Juni 2009, 20:56

Müsste eigentlich gehen, aber habs nicht getestet.
DU kannst $orte.delete_at(n) machen um den n+1ten Ort, den du erstellt hast zu löschen, aber dann musst du dirhalt die Reihenfolge merken^^
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

Ähnliche Themen

Social Bookmarks