• Anmelden

1

Dienstag, 6. Juli 2010, 20:18

Baum Pflanzen

Hallo liebe Community =)

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 =)

Mr_Raf

Ankömmling

Motto: Einmal selbst erleben ist besser als hundertmal hören.

  • Nachricht senden

2

Dienstag, 6. Juli 2010, 21:34

Hallo Kreater,

Also du möchtest einen Baum haben, der nur ein Feld abdeckt, was heißt, dass du einen schmalen Baum haben willst??

Spoiler: Normaler Baum
Bild
zum Lesen den Text mit der Maus markieren


Spoiler: Schmaler Baum
Bild
zum Lesen den Text mit der Maus markieren


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.

3

Dienstag, 6. Juli 2010, 22:03

Danke für die Antwort =)

also nein ich hab das so gemeint:

Man soll auf jedem Gras quadrat ein baum pflanzen können denn man sobald er gewachsen ist wieder fällen kann !

4

Dienstag, 6. Juli 2010, 22:49

Nun am einfachsten ist es einen kleinen Baum zu nehmen, der ein Tile groß ist und ihn als Charset anzuzeigen, ihn dann wachsen zu lassen und ihn später zu fällen. Da bieten sich die Bäume aus dem VX RTP an, ich hab da mal schnell was zusammen gewürfelt.
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.
Bild

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

5

Dienstag, 6. Juli 2010, 23:08

Benutz einfach ein Event-Klonen-Skript.
Ich hab kurz eins geschrieben, falls du keins findest:
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
# 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
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

soraiuga

Rekrut

Motto: Darf ich Ihre Bestellung aufnehmen? xD

  • Nachricht senden

6

Mittwoch, 7. Juli 2010, 14:47

Hey, ich habe das selbe vor und auch schon einen Baum erstellt.

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 :D)

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

7

Mittwoch, 7. Juli 2010, 14:56

Dafür holst du dir erstmal die Koordinaten des Feldes als Variablen (am besten als Common Event ;)

Ruby Quellcode

1
$game_map.terrain_tag($game_variables[10], $game_variables[11]) == 7
Den Code kannst du dann im Conditional Branch verwenden. Der fragt ab, ob das Feld mit den Koordinaten (Variable 10 | Variable 11) den Terrain Tag 7 hat.

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)
Damit kopierst du dann das Event und setzt es auf die Koordianten (Variable 10 | Variable 11).
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

soraiuga

Rekrut

Motto: Darf ich Ihre Bestellung aufnehmen? xD

  • Nachricht senden

8

Mittwoch, 7. Juli 2010, 15:21

Das ist mir soweit verständlich, bis auf...
Ich weiß nicht wie ich die Koordinate des Feldes kriege, das direkt vor dem Spieler liegt.

Ich kann ja nicht einfach $game_variables[10]plusminus 1 machen, da der Gegenstand so ja auch hinter mir landen kann (Sichtrichtung). Oder versteh ich was falsch?

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

9

Mittwoch, 7. Juli 2010, 15:26

Du kannst ja mit nem Conditional Branch abfragen, in welche Richtung ein Event / der Spieler guckt.
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

soraiuga

Rekrut

Motto: Darf ich Ihre Bestellung aufnehmen? xD

  • Nachricht senden

10

Mittwoch, 7. Juli 2010, 18:29

Gut, ich weiß jetzt, wann welches Feld abgefragt werden muss, ich weiß aber nicht wie.

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?

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

11

Mittwoch, 7. Juli 2010, 18:40

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)
Ne, Player's Y + 1.


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
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

soraiuga

Rekrut

Motto: Darf ich Ihre Bestellung aufnehmen? xD

  • Nachricht senden

12

Mittwoch, 7. Juli 2010, 19:07

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 :D

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

13

Mittwoch, 7. Juli 2010, 19:14

Ruby Quellcode

1
$game_map.check_event(x, y)

Prüft, ob sich ein Event an Stelle (x|y) befindet.
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

soraiuga

Rekrut

Motto: Darf ich Ihre Bestellung aufnehmen? xD

  • Nachricht senden

14

Mittwoch, 7. Juli 2010, 19:46

Das wäre für den Check also:

Ruby Quellcode

1
$game_map.check_event($game_variables[1], $game_variables[2])


Jetzt hat der Maker also überprüft.... Kann ich da auch irgendwie einen Wert raus ziehen und verhindern, dass ein weiteres Event auf dieses Feld gelangt?

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

15

Mittwoch, 7. Juli 2010, 20:04

Conditional Branch ;)
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

soraiuga

Rekrut

Motto: Darf ich Ihre Bestellung aufnehmen? xD

  • Nachricht senden

16

Mittwoch, 7. Juli 2010, 20:12

Hihi. Das habe ich mir gedacht. Wenn ich aber nun

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...

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

17

Mittwoch, 7. Juli 2010, 20:32

Zitat

Conditional Branch -> Script -> $game_map.check_event($game_variables[1], $game_variables[2])
mache, passiert... nichts :3
Oo
Weird... eigentlich sollte das so klappen. Naja, ich muss Fußball gucken und schau später nochmal danach :P

Zitat

Nervened kleine Kinder mit ihren Tröten...
Hau se weg.
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

soraiuga

Rekrut

Motto: Darf ich Ihre Bestellung aufnehmen? xD

  • Nachricht senden

18

Mittwoch, 7. Juli 2010, 20:35

*Lacht*
Bis dahin werd ich es weiterversuchen :3

Und ich darf die nicht weghauen ^^

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

19

Mittwoch, 7. Juli 2010, 22:28

Zitat

Und ich darf die nicht weghauen ^^
Tu es.
»Neo-Bahamut« hat folgende Datei angehängt:
  • Clone Event.7z (190,79 kB - 6 mal heruntergeladen - zuletzt: 25. März 2012, 15:18)
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

soraiuga

Rekrut

Motto: Darf ich Ihre Bestellung aufnehmen? xD

  • Nachricht senden

20

Mittwoch, 7. Juli 2010, 22:55

Danke erstmal dafür. (Du magst Englisch gerne, hu? :D)

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

Social Bookmarks