Baum Pflanzen
Ich hab mal eine Frage:
Ich möchte machen das man auf jeder x beliebigen stelle einen baum pflanzen kann ( Also nur auf gras ) da ein "Fällbarer" Baum ja aus sehr vielen verbunden Event's besteht, weis ich nicht wie ich das machen soll.
Hoffe auf schnelle hilfreiche Antworten =)
Benutzerinformationen überspringen
Ankömmling
Motto: Einmal selbst erleben ist besser als hundertmal hören.
Also du möchtest einen Baum haben, der nur ein Feld abdeckt, was heißt, dass du einen schmalen Baum haben willst??
Meinstest du vielleicht so dass der Baum schmaler sein soll, sodass er aber nur ein Feld breit ist??
Ansonsten gibt es auch bereits gefällte Bäume in den Standard Tilesets.
Um nun einen Baum zu pflanzen arbeitest du am besten mit Terrain-Tag, welchen du in einer Variable speicherst.
Du hast zB einen Terrain Tag von 2 für Gras. Das bedeutet, dort kann ein Baum gepflanz werden. (Conditional Branche)
Hast du einen Baum gepflanz, so kannst du dort keinen neuen Pflanzen, also musst du das im Event so festlegen.
Später kannst du dort auch bestimmen, wann er abgeholzt werden darf.
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Ich hab kurz eins geschrieben, falls du keins findest:
|
|
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 |
# to use, call script: # clone_event(original_map_id, original_event_id) # To set the events position or other things afterwards: # e = clone_event(original_map_id, original_event_id) # e.moveto(x, y) class Spriteset_Map def add_character(char) @character_sprites << Sprite_Character.new(@viewport1, char) end def redraw_characters if @character_sprites != nil @character_sprites.each do |i| i.dispose end end @character_sprites = [] for i in $game_map.events.keys.sort sprite = Sprite_Character.new(@viewport1, $game_map.events[i]) @character_sprites.push(sprite) end @character_sprites.push(Sprite_Character.new(@viewport1, $game_player)) end end class Scene_Map attr_reader :spriteset end class Game_Map def clone_event(map_id, event_id) # Get ID id = @events.size while @events[id] != nil id += 1 end # Load Event map = load_data(sprintf("Data/Map%03d.rxdata", map_id)) rpgev = map.events[event_id] # Set Event event = @events[id] = Game_Event.new(@map_id, rpgev) # Refresh Map $scene.spriteset.add_character(event) refresh # Return return event end end class Interpreter def clone_event(map_id, event_id) $game_map.clone_event(map_id, event_id) end end |
Wie kann ich das Skript denn dazu veranlassen, das zu klonende Event direkt vor den Spieler zu klonen (in Sichtrichtung also)?
Und wie kann ich dafür sorgen, dass z.B Bäume nur auf Terrain Tag xyz plaziert werden können? (Ich will ja keine Bäume auf Lava pflanzen
) Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
|
|
Ruby Quellcode |
1 |
$game_map.terrain_tag($game_variables[10], $game_variables[11]) == 7 |
|
|
Ruby Quellcode |
1 2 3 4 |
x = $game_variables[10] y = $game_variables[11] e = clone_event(original_map_id, original_event_id) e.moveto(x, y) |
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Wenn der Actor nach unten sieht ist das Feld das ich überprüfen muss Player's Y minus 1. (Das Feld auf dem ich stehe ist uninteressant)
Die Bedingung wäre dann:
$game_map.terrain_tag($game_variables[2] - 1) == 7
Wie kann ich denn eine Variable minus x abfragen lassen?
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Ne, Player's Y + 1.
Zitat
Wenn der Actor nach unten sieht ist das Feld das ich überprüfen muss Player's Y minus 1. (Das Feld auf dem ich stehe ist uninteressant)
|
|
Ruby Quellcode |
1 |
$game_map.terrain_tag($game_variables[10], $game_variables[11]) == 7 |
Ich versteh nicht, wo das Problem ist, du musst doch nur die beiden Variablen-IDs ersetzen Oo
|
|
Ruby Quellcode |
1 |
$game_map.terrain_tag($game_variables[10], $game_variables[11]) == 7 |
Hab mal wieder quatsch gemacht... Trotz allem will ich nicht das Feld, auf dem ich stehe, sondern das VOR mir.
|
|
Ruby Quellcode |
1 |
$game_map.terrain_tag($game_variables[10], $game_variables[11]+1) == 7 |
Bei einer Variable muss doch eins abgezogen oder drangehängt werden, damit von der Überprüfung das Feld VOR einem betroffen ist... oder?
Edit: Ok, jetzt hab ichs... Ich kann die Variable ja schon erhöhen/senken bevor sie abgefragt wird. Jetzt klappt es wunderbar.
Danke für deine hilfe (und Nerven) Neo ^-^
Edit 2: Nun hab ich doch ein kleines Problem. KAnn ich auch abfragen, ob an der Stelle, wo der Gegenstand hin soll schon ein anderer ist?
Sonst kann ich 20 Bäume auf ein Feld packen
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
|
|
Ruby Quellcode |
1 |
$game_map.check_event(x, y) |
Prüft, ob sich ein Event an Stelle (x|y) befindet.
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Blahblah... Variable für das zu prüfende Feld festgelegt...
Conditional Branch -> Script -> $game_map.check_event($game_variables[1], $game_variables[2])
mache, passiert... nichts :3
Wie soll ich das denn richtig benutzen?
Kannst du mir ein kleiens... Beispiel nennen?
Sorry, aber heute bin ich nicht ganz auf der Höhe... Nervened kleine Kinder mit ihren Tröten...
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Oo
Zitat
Conditional Branch -> Script -> $game_map.check_event($game_variables[1], $game_variables[2])
mache, passiert... nichts :3
Weird... eigentlich sollte das so klappen. Naja, ich muss Fußball gucken und schau später nochmal danach :P
Hau se weg.
Zitat
Nervened kleine Kinder mit ihren Tröten...
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Tu es.
Zitat
Und ich darf die nicht weghauen ^^
)Hm... Anderes Skript und andere Befehle ^^"
Jetzt hab ich ein Problem... kind of^^
So hatte ich es schon:
Feld vor dem Spieler finden - Sieht bei mir genau so aus wie bei dir
Fragen, ob das Feld Terraintag 7 hat - hat toll geklappt
Wenn nicht Terraintag 7 "Du kannst hier nichts pflanzen"
Jetzt wollte ich noch, dass wenn iwo schon ein Baum , oder sonst was, steht, ich die Nachricht bekomme, das da schon etwas steht.
Und da ich diese Funktion bestimmt auch anders verwenden würde, wüsste ich gerne, wie ich ohne dein neues Skript prüfen kann, ob auf einem Feld schon etwas ist.
Nochmal danke :3
Ähnliche Themen
-
Maker-Talk »-
Wie kann man Maps aus einem anderen Projekt in ein anderes kopieren?
(30. Juni 2010, 22:19)
-
Ältere Suchanfragen »-
Baum bepflanzen
(15. Juni 2010, 14:07)
-
Maker-Talk »-
Video zum Spiel
(27. Mai 2008, 18:15)
-
Ressourcen- & Gestaltungsforum »-
Screenshot-Thread #2 ~ Zeigt erneut, was ihr könnt.
(29. Juli 2006, 03:01)

