PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Event Kopieren



OneEyeShadow
16.06.2009, 16:30
Hallo ich hzätte da ma ne Frage, ist es eigentlich möglich ein Event zu kopieren und dann an eine bestimmte position auf eine andere Karte zu setzen? Wenn ja wie?

diäitsch
16.06.2009, 16:46
Ja. Rechtsklick auf's Event, "copy" => auf anderes Feld, Rechtsklick "paste".
War die Frage ernst gemeint?

Kelven
16.06.2009, 17:24
Ja, das sollte auch zur Laufzeit möglich sein. Das Setzen auf jeden Fall, dafür gibt es die Methode moveto in Game_Character.

SMWma
16.06.2009, 17:59
ich glaube, er meinte es wären dem laufenden Spiel Events zu koppieren...

strich
16.06.2009, 18:05
In dem fall kopierst du das event schon vorhher und machst bei dem 2ten event nen haken bei Switch (oben links im event) und stellst nen switch ein, d.h. das das 2te event erst per switch aktiviert wird, und somit vorher auch noch nicht wirklich existiert.

SMWma
16.06.2009, 18:08
naja, ich bräuchte auch so ein Script. Allerdings möchte ich in mein Spiel jetzt keine tausend Events(doch, wirklich einbauen, sondern ein Event mehrmals koppieren können.

Shining Advances
16.06.2009, 18:15
yay eine aufgabe =D
also bin mal von ausgegangen, dass das event auf die aktuelle karte kopiert werden soll.


class Spriteset_Map
def add_sprite(event)
@character_sprites.push(Sprite_Character.new(@viewport1,event))
end
end

class Scene_Map
def copy_event(map_id,event_id)
event = Game_Event.new(map_id, load_data(sprintf("Data/Map%03d.rxdata", map_id)).events[event_id])
$game_map.events[$game_map.events.keys.max+1] = event
@spriteset.add_sprite(event)
return event
end
end

über main einfügen und per call script aufrufen

$scene.copy_event(map_id,event_id).moveto(x,y)
map_id muss die id der map sein, von der das event kopiert wird.
event_id muss die id des events sein, das kopiert wird
x durch neue x koordinate ersetzen
y durch neue y koordinate ersetzen
wenn man .moveto(x,y) weggelässt erscheint das event an den original koordinaten.

nach einem teleport/transfer player ist das event wieder weg!

SMWma
16.06.2009, 18:43
jep, Events immer von der aktuellen Map koppieren^^
Wie bestimme ich die Event ID, und das Ziel(
x = $game_variables[xxx] )

strich
16.06.2009, 19:25
Wie bestimme ich die Event ID, und das Ziel(
x = $game_variables[xxx] )
Irgentwie versteh ich nich was du meinst :confused:
Wie man Event ID und x, y bestimmt?

Kelven
17.06.2009, 08:50
Du musst doch selber wissen welches Event kopiert werden soll und wohin es gehört.

OneEyeShadow
17.06.2009, 12:57
Ahh, danke für dieses Skript, sowas hab ich gebraucht, werds grad mal einbauen, vielen dank.
Edit: Ok, anscheinend hab ich mich zu früh gefreut, das Skript funktioniert nicht.

strich
17.06.2009, 14:35
Habs grad mal getestet funktioniert bei mir einwandfrei.
Was bekommste denn für ne Fehlermeldung?

OneEyeShadow
17.06.2009, 18:35
Das Problem hat sich erledigt, sorry, hab mich wohl beim Aufrufskrypt vertippt.
Also ich finds wirklich klasse, wie das so funktioniert, aber da ist mir ne Sache aufgefallen:
Das Kopierte Event übernimmt die Selfswitches des Originals (ist ja eigentlich nur logisch), aber lässt es sich auch so einrichten, dass die Events eigenständige Selfswitches haben? Also so, dass die Kopie wie ein Eigenständiges Event ist?
Und noch ne frage, ist es irgendwie möglich, dass die Kopie dann um ein bischen verändert wird, so, dass man z.B. Beim Kopieren die Kopie so verändert, dass sie ein anderes Bild hat als das Originbal und das auf der selben seite.

Ascare
18.06.2009, 16:29
@Shining Advances
Tolles Script, aber sowas gibt es ja schon, nennt sich
Events klonen (http://www.rpg-studio.de/itzamna/script/Programmierhilfen/Events-klonen.html).
Gibt es einen Unterschied zu deinem Script, außer das man bei dir per call script eine Zeile weniger tippen muss?

SMWma
18.06.2009, 17:30
und wie lasse ich statt map_ID die ID der momentane Karte benutzen?

Shining Advances
18.06.2009, 20:34
@ascare
ansich ist es das selbe, nur intern werden einige Dinge anders gehandhabt.

@adrian2000
$game_map.map_id ist die id der momentanen karte.

SMWma
19.06.2009, 19:36
naja, jetzt müsste ich nur noch die Koordinaten mit Variablen bestimmen können^^

Ascare
19.06.2009, 19:48
Hast du doch selbst eigentlich schon geschrieben, etwa so:


$scene.copy_event(map_id,event_id).moveto($game_variables[20],$game_variables[21])
oder


x = $game_variables[20]
y = $game_variables[21]
$scene.copy_event(map_id,event_id).moveto(x,y)

Ascare
23.06.2009, 19:09
Ok, hab Bugs gefunden.
- Erase Event funzt bei kopierten Events nicht richtig. Das kopierte Event bleibt sichtbar, aber nur das original verschwindet.
- Self Switches gelten auch anscheinend für alle (einmal für einen aktiviert, sind alle anderen Kopien auch betroffen)
- Wenn man kopierte Events "anspricht" dann bleiben sie stehen und irgendwie gehen die Move Route Befehle verloren.

Shining Advances
24.06.2009, 17:20
class Spriteset_Map
def add_sprite(event)
@character_sprites.push(Sprite_Character.new(@viewport1,event))
end
end

class Scene_Map
def copy_event(map_id,event_id)
event = Game_Event.new(map_id, load_data(sprintf("Data/Map%03d.rxdata", map_id)).events[event_id])
$game_map.events[$game_map.events.keys.max+1] = event
event.id = $game_map.events.keys.max
@spriteset.add_sprite(event)
event.refresh
return event
end
end

class Game_Event
def id=(n)
@id = n
@event.id = n
end
end


das problem war, dass die kopierten events immernoch die selbe id hatten und deshalb einige sachen sich auf die ursprungsevents übertragen haben und umgekehrt.
bugs sollten jetzt behoben sein (wobei ich nicht genau weiß was mit dem letzten gemeint war).

Ascare
24.06.2009, 18:20
Habs mal angetestet, scheint jetzt alles gut zu laufen. Danke! :)