• Anmelden

snoopi

Rekrut

  • »snoopi« ist der Autor dieses Themas

Motto: Der Beste Kampf - ist der, der Nie geführt wurde!

  • Nachricht senden

1

Samstag, 24. September 2011, 00:17

[gelöst] ganz einfaches Skript xD

Hallo RGSS-Gesegnete x)

Bräuchte ein total simples Skript das folgendes tut:
1. Aktuelle MapID abfragen
2. Check if "Aktuelle Map" = "letzte Map"
3. IF not: Sämtliche Events mit "(folgen)" im Namen suchen und auf die aktuelle Spielerposition setzen (Grund wieso ich es nicht über Event regeln kann)
4. Speichern unter "letzte Map" (Variabel?)
5. IF yes: do nothing

Leider bin ich überhaupt nicht RGSS bewandert (ach ich sollte mich echt mal um ne Schulung bemühen.. wann gibt es mal wieder so ein Kurs? xD) aber ich bin mir sicher, dass das selbst ein blutiger Anfänger Umsetzen kann.. daher schon mal Danke im Voraus! ;)

Das Skript brauche ich, um meine Party Member mir folgen zu lassen, aber den Rest krieg ich auch über Events geregelt.. das wäre also wirklich alles was ich brauche :)

Merci und Gruss
Snoopi
Bild

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »snoopi« (8. Oktober 2011, 01:04)


Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

2

Montag, 26. September 2011, 20:55

Wenn du das ganze mit Events machen möchtest (vorrausgesetzt du setzt die "(folgen)"-Flags selbst und nicht ein Script o.Ä., dann sieht die Sache natürlich anders aus) könntest du u.U. auf jeder Map ein Parallel-Process-Event setzen, welches alle gewünschten Events auf die Position des Spielers setzt und anschließend über "Erase Event" entfernt wird.

Ansonsten:
<Spiler entfernt> hat sowieso nicht funktioniert

Der einzige Unterschied zu deinen Vorstellungen ist dass nicht die ganze Zeit die Map-ID abgefragt wird sondern der Code direkt in der Setup-Methode von Game-Map ausgeführt wird (diese ist unter anderem verantwortlich dafür dass die Events zurückgesetzt werden und wird entsprechend immer dann aufgerufen wenn die Map gewechselt wird oder du einen Spielstand aus einer anderen Spielversion lädst)

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Irrlicht« (7. Oktober 2011, 21:56)


snoopi

Rekrut

  • »snoopi« ist der Autor dieses Themas

Motto: Der Beste Kampf - ist der, der Nie geführt wurde!

  • Nachricht senden

3

Freitag, 7. Oktober 2011, 20:57

Hy Irrlicht

Zuerst einmal Danke mal wieder für deine Hilfe .. aber diesmal klappts nicht so ;)

Sobald ich die Map mit einem xy (folgen) - Event betrette kommt diese Fehlermeldung mit Ref. auf Line9: No Method Error
undef. method 'move to' for #<Game_Event:0x90fd868>

Mmh ausserdem merke ich gerade, dass der letzte Satz in meinem vorherigen Post ein bisschen unglücklich ausgedrückt ist, um nicht zu sagen verwirrend xD .. was ich glaube ich eigentlich sagen wollte:
Dass die einzelnen Events mir auf Schritt und tritt folgen, habe ich bereits per Eventbefehl geregelt. Ich brauch nur ein Skript, welches diese Events bei Mapwechsel auf die Actor-Position setzt. ^^

d.h. also, dass skript soll wirklich auch nur einmal bei Mappwechsel die Positionen abfragen und einmalig korrigieren .. somit denke ich, ist das schon recht so, wenn das Skript im Setup der Gamemap ausgeführt wird =D
Bild

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

4

Freitag, 7. Oktober 2011, 21:21

Huch, ich dachte das hätte ich korrigiert :pardon:
Richtigerweise sollte in der Zeile moveto anstatt move_to stehen, Sorry.

Zum Event:
Ich weiß grad nicht ob ich was falsch verstanden hab oder wir aneinander vorbeireden, ich meinte eig. soetwas:
Attachment 17626
(Einschränkung wäre natürlich dass du wissen müsstest welche Events "(folgen)" im Namen haben bzw. auf die Heldenposition gesetzt werden müssen.)

snoopi

Rekrut

  • »snoopi« ist der Autor dieses Themas

Motto: Der Beste Kampf - ist der, der Nie geführt wurde!

  • Nachricht senden

5

Freitag, 7. Oktober 2011, 21:34

ööhm haha flüchtigkeitsfehler.. kann passieren :P Viel gravierender finde ich eher diesen Fehler:

Wenn ich das richtig erkenne, wird die Player x/y - Screenposition und zwar vor dem Transfer hergezogen, anstatt die neue Mapposition.. die Folgen kannst du dir ja vorstellen ^^'
Bild

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

6

Freitag, 7. Oktober 2011, 21:55

*Naarrf*, hast recht... Wenn man es mit dem "richtigen" Teleportbefehl versucht funktioniert es doch nicht... *nächste Wand zum Kopf gegenschlagen such*

Die einfachste Lösung wäre natürlich bei jedem Teleport des Helden die Gruppenmitglieder ebenfalls mitzuteleportieren, das hätte zur Folge dass die Gruppenmitglieder auch dann zurückgesetzt würden wenn sich der Held von einer Stelle der Map zu einer anderen teleportiert.
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
class  Game_Map
 
  unless method_defined?(:setup_ILC_move_events_to_players_position)
    alias_method(:setup_ILC_move_events_to_players_position, :setup)
  end
  def setup(*args)
    setup_ILC_move_events_to_players_position(*args)
    set_party_position
  end
 
  def set_party_position
    @events.each_pair do |id, event|
      if @map.events[id].name[/\(folgen\)/] != nil
        event.moveto($game_player.x, $game_player.y)
      end
    end
  end
end
 
 
class Game_Player < Game_Character
 
  unless method_defined?(:moveto_ILC_move_events_to_players_position)
    alias_method(:moveto_ILC_move_events_to_players_position, :moveto)
  end
  def moveto(*args)
    moveto_ILC_move_events_to_players_position(*args)
    $game_map.set_party_position
  end
end
zum Lesen den Text mit der Maus markieren


Ansonsten eine "Schnellösung" (ähnelt nun mehr denn je deiner o.g. Beschreibung, aber es funktioniert soweit schonmal^^)
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
class Game_Map
 
  unless method_defined?(:setup_ILC_move_events_to_players_position)
    alias_method(:setup_ILC_move_events_to_players_position, :setup)
  end
  def setup(*args)
    setup_ILC_move_events_to_players_position(*args)
    # Partyposition wird beim nächsten Update aktualisiert:
    @set_party_position = true
  end
 
  unless method_defined?(:update_ILC_move_events_to_players_position)
    alias_method(:update_ILC_move_events_to_players_position, :update)
  end
  def update
    if @set_party_position
      @set_party_position = false
      @events.each_pair do |id, event|
        if @map.events[id].name[/\(folgen\)/] != nil
          event.moveto($game_player.x, $game_player.y)
        end
      end
    end
    update_ILC_move_events_to_players_position
  end
end
zum Lesen den Text mit der Maus markieren

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Irrlicht« (7. Oktober 2011, 22:52)


snoopi

Rekrut

  • »snoopi« ist der Autor dieses Themas

Motto: Der Beste Kampf - ist der, der Nie geführt wurde!

  • Nachricht senden

7

Samstag, 8. Oktober 2011, 01:03

Uueeeee grossartig! :D

Ich habe mich jetzt für deinen 1. Script entschieden.. Wäre doch ein bischen blöd, wenn meine Teammitglieder in der Bucht stecken bleiben würden nach dem ich mich rauf teleportiert habe :P

Das wär auf jedenfall auch schon mal ein weiterer Vorteil gegenüber der Lösung per Event, neben dem geringeren Aufwand und der höheren Performancefreundlichkeit.. gell? ;D

Auf jedenfall Danke nochmals! =)
Bild

Social Bookmarks