Ein Script, dass den Eventnamen nach Begriffen durchsucht
Hallo,
EDIT: der erste Post brauch nicht beachtet werden. Beim zweiten Post gibt es einen besseren Ansatz das Problem zu lösen.
EDIT2: Siehe Post Nr. 2
EDIT: der erste Post brauch nicht beachtet werden. Beim zweiten Post gibt es einen besseren Ansatz das Problem zu lösen.
EDIT2: Siehe Post Nr. 2
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »fjurios« (3. März 2011, 18:01) aus folgendem Grund: Irreführung
Eine bessere Idee
Hmm, keiner meldet sich. Schade.
Inzwischen ist mir aber auch eine andere Idee eingefallen. Eine andere Art von Script die sehr vielseitig genutzt werden könnte und daher sicherlich für viele interessant wäre.
Ich spreche von einem Script, das den Namen eines Events nach einer bestimmten Syntaxe durchsucht und true oder false zurückgibt.
Beispiel:
$eventname_include?(event-ID, "Syntax")
event-ID = die ID des Events, das "gelesen" werden soll
"Syntax" = der Text nachdem im Namen gesucht werden sollte
konkrettes Beispiel:
$eventname_include?(5, "\Gegner")
In diesem Beispiel würde das Script den Namen des Events, mit der ID 5, nach dem Wort "\Gegner" (die "" nicht suchen") durchsuchen. Beinhaltet der Name des Events \Gegner so gibt der Befehlt true wieder ansonsten false.
Damit könnte ich mein Problem mit den Scripts die ich bereits von hier habe lösen können.
Desweiteren denke ich, dass so ein Script genau so vielseitig und nützlich verwendet werden kann wie das klon-script und daher vielen helfen würde.
Über irgendeine Reaktion, und sei es auch nur ein Kommentar, würde ich mich freuen.
Inzwischen ist mir aber auch eine andere Idee eingefallen. Eine andere Art von Script die sehr vielseitig genutzt werden könnte und daher sicherlich für viele interessant wäre.
Ich spreche von einem Script, das den Namen eines Events nach einer bestimmten Syntaxe durchsucht und true oder false zurückgibt.
Beispiel:
$eventname_include?(event-ID, "Syntax")
event-ID = die ID des Events, das "gelesen" werden soll
"Syntax" = der Text nachdem im Namen gesucht werden sollte
konkrettes Beispiel:
$eventname_include?(5, "\Gegner")
In diesem Beispiel würde das Script den Namen des Events, mit der ID 5, nach dem Wort "\Gegner" (die "" nicht suchen") durchsuchen. Beinhaltet der Name des Events \Gegner so gibt der Befehlt true wieder ansonsten false.
Damit könnte ich mein Problem mit den Scripts die ich bereits von hier habe lösen können.
Desweiteren denke ich, dass so ein Script genau so vielseitig und nützlich verwendet werden kann wie das klon-script und daher vielen helfen würde.
Über irgendeine Reaktion, und sei es auch nur ein Kommentar, würde ich mich freuen.
Vielleicht finden es alle öde, das diese Frage so oft gestellt wird, wobei die Forensuche, ScriptDB und online Suchmaschiene doch so viele Lösungen parat haben .-.
Hier sind die ersten beiden Treffer meiner kurzen Suche:
Ein Event löst durch gehen ein Event aus - Einsteigerhilfe - RPG Studio - Make your World real
Schieberätsel very easy | RPG Studio
wenn man länger als 60 Sekunden sucht, findet man noch mehr.
Zu deiner 2.Idee, da findet man auch bestehende Scripte, die Idee ist nicht die neuste
Hier sind die ersten beiden Treffer meiner kurzen Suche:
Ein Event löst durch gehen ein Event aus - Einsteigerhilfe - RPG Studio - Make your World real
Schieberätsel very easy | RPG Studio
wenn man länger als 60 Sekunden sucht, findet man noch mehr.
Zu deiner 2.Idee, da findet man auch bestehende Scripte, die Idee ist nicht die neuste
Das große Scientia Wiki zur Spielentwicklung 
Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs
Musik von Shabraxxx für euch
Guide zu den Audioformaten
Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.
Wie ich schon in meinen zweiten Post angedeutet habe, habe ich bereits diese und auch weitere Scripts. Leider erfüllen sie nicht die Funktionen die ich brauche.
Ich gebe zu, dass aus dem ersten Post nicht ersichtlich wird wo nun der Unterschied zu den genannten Scripts sein soll.
Daher einfach den ersten Post ignorieren. Im Zweiten stehen die relevanten Sachen.
Ich gebe zu, dass aus dem ersten Post nicht ersichtlich wird wo nun der Unterschied zu den genannten Scripts sein soll.
Daher einfach den ersten Post ignorieren. Im Zweiten stehen die relevanten Sachen.
Playm meint: das du dir den Code ansehen und anschließend es in dein eigenes Script übertragen sollst.
Sorry, aber ich verstehen nicht was du meinst. Falls du erklären wolltest wie man die Scripts einfügt, so weiß ich das und sie funktionieren auch.
Aber wie gesagt, der erste Post ist nicht relevant. Interessant wäre ein Script, dass den Eventnamen nach einem bestimmten Begriff durchsucht.
@fjurio eine Frage:
1.Was soll das im Spiel dann genau bewirken, wenn da was aus dem Namen gelesen werden soll?(wie z.B. "Gegner")
2.Lässt sich das nicht über Event ID Regeln?
Ich kopier mir die Events immer in der richtigen Reihenfolge auf die Maps.So kann ich sie auf jeder Map nutzen und entsprechend anpassen.
3.Welche Probleme hast du denn mit deinen bisherigen Skripten?
(Hast du oben erwähnt.Vieleicht lässt sich das ja auch anders lösen.Am besten die mal posten.
Wenn ich Ahnung vom Skripten hätte würd ich helfen.Da das nicht der Fall ist stell ich paar Fragen um die Lage besser beurteilen zu können
1.Was soll das im Spiel dann genau bewirken, wenn da was aus dem Namen gelesen werden soll?(wie z.B. "Gegner")
2.Lässt sich das nicht über Event ID Regeln?
Ich kopier mir die Events immer in der richtigen Reihenfolge auf die Maps.So kann ich sie auf jeder Map nutzen und entsprechend anpassen.
3.Welche Probleme hast du denn mit deinen bisherigen Skripten?
(Hast du oben erwähnt.Vieleicht lässt sich das ja auch anders lösen.Am besten die mal posten.
Wenn ich Ahnung vom Skripten hätte würd ich helfen.Da das nicht der Fall ist stell ich paar Fragen um die Lage besser beurteilen zu können
Ich will damit die Events selektieren können. Ein anderes Event soll aus dem Namen erkennen wie es reagieren soll. Beispiel: Ein Event bewegt sich durch den Bildschirm und überprüft dabei welches Event es dabei berührt. Ist es eine z.B. Teleporterpunkt macht es nichts. Ist es ein Event was mit einem "Mensch" gekennzeichnet ist, soll es, mit den genannten Scripts, die ID des Events wiedergeben. Anhand dieser ID wollte ich das Event bewegen, aber mir fällt grade auf, dass mir dazu der Script Call Command fehlt (also sowas wie $game_map.events[11].move_right, wobei mir nur der erste Teil des Commands fehlt, die ganzen force movment Commands habe ich schon gefunden). Falls mir niemand mit den Commends helfen kann, hätte ich aber noch einen Plan B.1.Was soll das im Spiel dann genau bewirken, wenn da was aus dem Namen gelesen werden soll?(wie z.B. "Gegner")
Würde aus dem Grund nicht gehen, da ich das Event von einer anderen Map kopiere (klone). D.h. es ist jedes Mal eine andere ID.2.Lässt sich das nicht über Event ID Regeln?
Naja, Probleme habe insofern mit denen nicht. Die funktionieren ja...3.Welche Probleme hast du denn mit deinen bisherigen Skripten?

Aber es fehlt mir halt die Möglichkeit, dass bei einer Kollision mit einem Event aus dem Namen und nicht aus der ID erkannt wird, ob es darauf reagiert oder nicht.
Ich danke für das Intresse.

Wenn man ausführlichere Informationen brauch, könnt ihr gerne fragen.
Wenn jemand sagt: "Du findest das Script, wenn du selber suchst", ist es wahrscheinlich, das er das Script durch suchen gefunden hat, es vor ihm liegt, und er sich wundert warum er selbst das Script findet, aber der Threadstarter nicht.
Damit sich der Thread jetzt aber nicht unnötig in die Länge zieht, poste ich das Script einfach nochmal:
An den Eventnamen kommst du also mit dem Befehl
Den kannst du dann gegen ein Muster testen, dafür nutzt du Regexp. Eine Erklärung findest du HIER.
Damit sich der Thread jetzt aber nicht unnötig in die Länge zieht, poste ich das Script einfach nochmal:
Als neues Script über Main einfügen
|
|
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 |
#============================================================================== # ** Interpreter Erweiterung #------------------------------------------------------------------------------ # Neue Codeerweiterungen für diese Klasse # # Sämmtliche Methoden können aus einem CallScript-Eventcommand aufgerufen # werden. # # @autor : Playm (www.rpg-studio.de) # @version: 1.0 # @date : 10.Nov.2010 #============================================================================== class Interpreter #-------------------------------------------------------------------------- # * Konstanten #-------------------------------------------------------------------------- CSE_MSG = "Beim Event%.3d auf Map%.3d ist im CallScript in Zeile %d ein Fehler aufgetreten!\n" #-------------------------------------------------------------------------- # * Call Script Command (intern) #-------------------------------------------------------------------------- def command_355 # Set first line to script script = @list[@index].parameters[0] + "\n" # Loop - add lines while(@list[@index+1].code == 655)do script += @list[@index+1].parameters[0] + "\n" @index += 1 end # Evaluation begin result = eval(script) rescue => e msg = sprintf(CSE_MSG, @event_id, @map_id, @index+1) + "\n#{e.message}" print(msg) return true; end # return return !(result==false) end #-------------------------------------------------------------------------- # * get event name # # Gibt den Namen des Events dessen ID angegeben wird zurück. # event_id : -1 => Name des Helden auf der Map # event_id : 0 => Name des Events das diesen Code ausführt # event_id : n => Name des Events mit der ID n #-------------------------------------------------------------------------- def get_event_name( event_id ) if( event_id == (-1) ) name = $game_party.actors.first.name else event = get_character( event_id ) name = event.instance_variable_get(:@event).name end return name end #-------------------------------------------------------------------------- # * set zoom # # Ändere den Zoom eines Event Sprites auf die angegebene Rate. # Für normale Größe, übergib als +rate+ 1 und übergib 0.5 für # die halbe Größe. #-------------------------------------------------------------------------- def set_zoom( event_id, rate ) spriteset = $scene.instance_variable_get(:@spriteset) char_sprite= spriteset.instance_variable_get(:@character_sprites)[event_id-1] char_sprite.zoom_x=rate char_sprite.zoom_y=rate end #-------------------------------------------------------------------------- # * get_comments # # Liest alle Kommentare aus einer EventPage von einem Event aus #-------------------------------------------------------------------------- def get_comments( event_id, page_num ) return "" if((event_id < 0) && (event_id > $game_map.events.length)) event = get_character( event_id ) ev_comm = event.instance_variable_get(:@event).pages[page_num-1].list kom = "" ev_comm.each do |command| kom << command.parameters[0]+"\n" if(command.code==108 or command.code==408) end return kom end end |
zum Lesen den Text mit der Maus markieren
|
|
Ruby Quellcode |
1 |
name = get_event_name( ID ) |
Den kannst du dann gegen ein Muster testen, dafür nutzt du Regexp. Eine Erklärung findest du HIER.
Das große Scientia Wiki zur Spielentwicklung 
Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs
Musik von Shabraxxx für euch
Guide zu den Audioformaten
Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.Das ist albern. Wenn du das bereits Script gefunden hast, könntest du mir auch gleich den Link geben oder zumindest mir sagen wonach ich suchen soll. Denn wenn ich schreibe ich habe es gesucht und nicht gefunden, dann habe ich offensichtlich nach dem falschen gesucht. Da könntest du mir nachhelfen. Hast du aber keine Lust mir zu helfen, dann poste lieber gar nicht, denn dieses kindische Verhalten steckt andere an, inbesondere wenn sie von einem Administrator ausgehen.Wenn jemand sagt: "Du findest das Script, wenn du selber suchst", ist es wahrscheinlich, das er das Script durch suchen gefunden hat, es vor ihm liegt, und er sich wundert warum er selbst das Script findet, aber der Threadstarter nicht.
Dennoch möchte ich dir danken. Über das Script bin ich zwar schon gestolpert doch konnte ich damit mangels "RegeXp-Wissen" nichts anfangen. Hier war deine Hilfe direkt und präzise.
Für das "get_event_name" würde Regex empfohlen, was sehr Umfangreich, aber auch kompliziert ist. Ich habe einen Befehl gefunden der unkomplizierter ist:
beliebige_variable ist die Variable die nach "steht das hier drin?" durchsucht wird. Wenn der Text zwischen den Gänsefüsschen in der Variablen enthalten ist gibt dieser Ausdruck true wieder, wenn nicht dann false.
Beispiel:
Man kann dafür natürlich auch die Variablen von dem Maker verwenden, die mit $game_variables[id] aufgerufen(bzw. gespeichert) werden. Dabei ist die id die Nummer der Variabel.
Beispiel:
Mit diesem leichten Scriptcall könnt ihr in den Variablen auch was anderes als Zahlen speichern und diese wie gewohnt auch in der Textbox durch das Kürzel \v[id] erscheinen lassen.
In diesem Fall speichern wir den Namen von einem Event in einer Variable:
und auch überprüfen lassen ob Kürzel "Feind" in dem Namen enthalten ist:
den letzten Schritt kann man in Conditional Branch, 4te Seite unter Script eingeben. In diesem Fall würde der Branch ausgeführt werden, wenn in dem Eventnamen von dem Event 001 das Wort "Feind" vorkommt.
Ich fand dies sehr nützlich und hoffe es wird auch euch helfen.
|
|
Ruby Quellcode |
1 |
beliebige_variable.include? "steht das hier dirn?" |
beliebige_variable ist die Variable die nach "steht das hier drin?" durchsucht wird. Wenn der Text zwischen den Gänsefüsschen in der Variablen enthalten ist gibt dieser Ausdruck true wieder, wenn nicht dann false.
Beispiel:
|
|
Ruby Quellcode |
1 2 3 |
text = "Hallo Welt" text.include? "Welt" # gibt true wieder, denn "Welt" kommt in "Hallo Welt" vor text.include? "Affe" # gibt false wieder, denn "Affe" kommt in "Hallo Welt" nicht vor |
Man kann dafür natürlich auch die Variablen von dem Maker verwenden, die mit $game_variables[id] aufgerufen(bzw. gespeichert) werden. Dabei ist die id die Nummer der Variabel.
Beispiel:
|
|
Ruby Quellcode |
1 |
$game_variables[10] = "Affe" # in die Variabel mit der Nummer "010" (Der Name dem ihr in dem Maker gegeben habt ist egal) wird das Wort "Affe" gespeichert |
Mit diesem leichten Scriptcall könnt ihr in den Variablen auch was anderes als Zahlen speichern und diese wie gewohnt auch in der Textbox durch das Kürzel \v[id] erscheinen lassen.
In diesem Fall speichern wir den Namen von einem Event in einer Variable:
|
|
Ruby Quellcode |
1 |
$game_varbiables[10] = get_event_name(1) # der name von dem Event 001 wird in der Variabel 010 gespeichert |
und auch überprüfen lassen ob Kürzel "Feind" in dem Namen enthalten ist:
|
|
Ruby Quellcode |
1 |
$game_varbiables[10]include? "Feind" |
den letzten Schritt kann man in Conditional Branch, 4te Seite unter Script eingeben. In diesem Fall würde der Branch ausgeführt werden, wenn in dem Eventnamen von dem Event 001 das Wort "Feind" vorkommt.
Ich fand dies sehr nützlich und hoffe es wird auch euch helfen.
Ähnliche Themen
-
RGSS 1 Probleme & Talk »-
QuestLog Script
(6. Februar 2011, 00:26)
-
Events & Technik »-
Wiederherstellen von Events
(20. Februar 2011, 15:37)
-
Skript-Anfragen »-
Brauche Goldüberprüfungsscript
(22. März 2010, 18:10)
-
Einsteigerhilfe »-
Ein Event löst durch gehen ein Event aus
(23. Januar 2010, 10:54)
-
Einsteigerhilfe »-
Schieberätsel
(20. Februar 2009, 21:13)
