Du kannst derweil diese IPS installieren und später problemlos DynRPG drüber.
@1.09: Ja, zu beachten ist dass dann 95% der Patches nicht funktionieren.
Druckbare Version
Du kannst derweil diese IPS installieren und später problemlos DynRPG drüber.
@1.09: Ja, zu beachten ist dass dann 95% der Patches nicht funktionieren.
Hallo,
habe eben den Patch auf das Demoprojekt draufgespielt. Leider scheint der Skillwiederholungs-Bug nicht behoben worden zu sein.
Wenn ich einen Skill (Skill und Skill Subset) einsetze, wird er in jeder darauffolgenden Runde nach dem Link to Event Befehl wiederholt,
egal ob ich in das Skillmenü gehe oder nicht. Es ist auch egal ob ich in das Item Menü gehe oder sogar eins dazwischen benutze.
Der Skill wird immer wiederholt. Der Skill wird sogar auf mich selbst gecastet wenn ich ein Item auf mich benutze, schätze weil ich mich als Ziel festlege.
Der Absturz ist aber weg und mit den used Items/Item Menü gibt es auch keine Probleme. Da wird nichts wiederholt.
Tippfehler. Ich bin manchmal echt zu dämlich.
http://share.cherrytree.at/showfile-...ventbugfix.ips
Einfach nochmal patchen.
Wegen 1.09: Ja, wenn ich nochmal ganz von vorn anfangen könnte, würd ich auch meine ganzen Sachen auf 1.09 aufbauen. Allerdings kannte ich am Anfang überhaupt keine Versionen sondern nahm halt "die 2k3-EXE", welche die hier am meisten verbreitete 1.08 war. Und mein ganzes Wissen und meine Datenbank haben halt seither darauf aufgebaut.
Ich wollte mal in die Runde fragen.
Wie ihr ein Aschenregen mit Kisel und Broken und eben den Dicken Schwarzen wolken so erstellen würdet?
Kann ja mal passieren ^^
Ehm... irgendwie hat sich nichts geändert. Habe mehrmals gepatcht. Der Bug bleibt aber weiterhin. Ein neues Projekt muss ich nicht anfangen oder?
Achso. Könntest du die Fixes von 1.09 nicht einfach mit in DynRPG einbauen oder hast du das schon, erachtest du sie nicht für so wichtig oder gibt es andere Gründe?
@Chili: Toll, jetzt auch noch die falsche URL kopiert... @_@
http://share.cherrytree.at/showfile-...ventbugfix.ips
Jetzt aber.
Ich wollte mal wissen ob mir wer bei meinen Problem helfen kann.
Und zwar kann ich seit einiger Zeit keine Spiele mehr spielen die mit dem RPG-Maker 2000 und 2003 erstellt worden. Immer wenn ich Sie versuche zu starten wird der Bildschirm schwarz und der PC friert ein. Zudem bekomme ich auch keine Fehlermeldung. Dieses Problem tritt übrigens nur bei Spielen die mit dem RPG-Maker 2000 und 2003 erstellt wurden auf und Spiele die mit dem RPG-Maker XP und VX erstellt wurden funktionieren einwandfrei.
Das RTP hab ich instaliert und ich hab auch schon versucht die Spiele als Administrator auszuführen.
Auch, wenn du das Spiel im Fenstermodus startest?
Hast du es mal mit dem Kompatiblitätsmodus versucht?
LG
@Cherry
Wie startet man die Spiele denn im Fenstermodus?
@MajinSonic
Schon probiert geht aber trotzdem nicht.
Am einfachsten: Spiel direkt im Maker öffnen und dort Vollbildmodus abschalten vor dem Testplay.
Am direktesten: Mit den Kommandozeilenparametern "TestPlay ShowTitle Window" starten. Z.B. eine Verknüpfung zur RPG_RT.exe erstellen, Eigenschaften der Verknüpfung öffnen und bei "Ziel" ganz am Ende noch die Parameter (ohne Anführungszeichen) anfügen.
gibt es einen 100 pic patch für den rm2k?
ich hab versucht den destiny patcher zu finden aber irgendwie sind alle links down
9999 Pics im 2k gibts mit Hyper Patcher 2: http://cherrytree.at/download/?did=10
Hai!
Ich bräuchte Hilfe bei einem Skript.
Folgende Situation:
Ich habe in der Spielwelt verschiedene Arten von Pflanzen, die der Spieler aufsammeln kann, diese sollen je nach Art zu einer bestimmten Zeit respawnen.
Der Timer wird durch eine Variabel Uhr gesteuert. Nachdem eine Pflanze aufgesammelt wurde, darf sie natürlich nicht wieder sammelbar sein bis der
Befehl vom respawntimer kommt.
Mein Problem: Gibt es eine Möglichkeit obiges zu erzielen, ohne für jede einzelne Pflanze einen Switch zu setzen, um sie bis zum respawnen der Pflanzenart "auszuschalten"?
Irgendwie komme ich auf keinen grünen Zweig.
Bin auch für alternative Ideen und Vorschläge offen^^
Danke!
Dieser Code geht davon aus dass 5000 die höchste verwendete Variablen-ID ist. Solltest du höhere Variablen verwenden, musst du die Zahl "5000" im Code entsprechend ändern.
Für die anderen Variablen habe ich keine ID angegeben, da kannst du beliebige nehmen.
Es wird ein assoziatives Array implementiert, in Variablen NACH DEM ENDE DER DEFINIERTEN, also wenn z.B. 5000 die höchste eingestellte Variable ist, werden Variablen ab #5001 verwendet. Diese erscheinen NICHT im F9-Menü!
Es werden Daten in je 2 Variablen gespeichert, einmal ein Schlüssel, einmal ein Wert. Das Ende der Liste wird durch Schlüssel 0 signalisiert.
Dieses Skript kodiert Map ID und Event ID in einem Schlüssel. In dem assoziativen Array speichert jedes Pflanzenevent den Zeitpunkt an dem es respawnt wird, oder 0 wenn es gerade sichtbar und aktiv ist. Es gibt ein Common Event was den Timer verwaltet und bei Bedarf Events respawnt oder beim Mapwechsel erneut deaktiviert, je nach Bedarf.
Auf diese Weise kann man Pflanzen einfach kopieren. Pflanzen haben 3 Eventseiten, Eventseite 1 dient dazu, eine Pflanze zu respawnen, während Eventseite 2 sie deaktiviert. Dies passiert nach außen rein über die Eventgrafik (leer = deaktiviert). Eventseite 3 ist die, die beim Enterdruck ausgeführt wird. Da wird u.a. die Respawnzeit der Pflanze festgelegt sowie was genau passieren soll wenn man eine aktive Pflanze anspricht.
Das Skript geht von maximal 1000 Events auf einer Map aus, obwohl der Maker afaik 9999 erlaubt, sowie maximal 9999 Maps (ich gehe davon aus du verwendest den 2k3, sonst wären es 999 Maps). Solltest du tatsächlich mehr verwenden, musst du die Zahl "1000" im Code ändern, allerdings je mehr Events du erlaubst, desto weniger Maps sind möglich. 1000 sollte also normalerweise gut passen.
WARNUNG: Das ganze entstand gerade hier aus meinem Kopf. Ich habe es nicht getestet!
Common Event "GetAssocValue":
<> Comment: Dieses CE dient dazu, einen Wert anhand eines Schlüssels aus unserem assoziativen Array zu lesen.
<> Comment: Skript erwartet Schlüssel in Variable [AKey] und liefert Ergebnis in Variable [AValue] oder 0 wenn Schlüssel nicht vorhanden
<> Comment: Alle Elemente des assoziativen Arrays werden abgeklappert.
<> Change Variable [AIndexCounter] = 5000
<> Comment: Standardwert ist 0.
<> Change Variable [AValue] = 0
<> Label: 1
<> Change Variable [AIndexCounter] += 1
<> Change Variable [ATempKey] = V[V[AIndexCounter]]
<> Comment: Ist der Schlüssel 0, wäre das Ende der Liste erreicht.
<> Fork Condition: If V[ATempKey] != 0
....<> Change Variable [AIndexCounter] += 1
....<> Fork Condition: If V[ATempKey] != V[AKey]
........<> Comment: Weitersuchen
........<> Go To Label: 1
........<>
....: Else Case
........<> Comment: Schlüssel gefunden, Wert einlesen
........<> Change Variable [AValue] = V[V[AIndexCounter]]
........<>
....: End Case
....<>
: End Case
Common Event "SetAssocValue":
<> Comment: Dieses CE dient dazu, einen Wert anhand eines Schlüssels in unserem assoziativen Array zu speichern.
<> Comment: Skript erwartet Schlüssel in Variable [AKey] und Wert in Variable [AValue]
<> Comment: Alle Elemente des assoziativen Arrays werden abgeklappert.
<> Change Variable [AIndexCounter] = 5000
<> Label: 1
<> Change Variable [AIndexCounter] += 1
<> Change Variable [ATempKey] = V[V[AIndexCounter]]
<> Comment: Wenn der Schlüssel nicht 0 ist, ist der Slot schon belegt.
<> Fork Condition: If V[ATempKey] != 0
....<> Comment: In diesem Fall stellen wir sicher, dass wir den gesuchten Schlüssel gefunden haben.
....<> Fork Condition: If V[ATempKey] != V[AKey]
........<> Comment: Weitersuchen
........<> Change Variable [AIndexCounter] += 1
........<> Go To Label: 1
........<>
....: End Case
....<>
: Else Case
....<> Comment: Der Schlüssel ist 0, d.h. der Slot ist frei (Ende der Liste erreicht), wir legen hier also den neuen Schlüssel fest.
....<> Change Variable [V[AIndexCounter]] = V[AKey]
....<>
: End Case
<> Comment: Wert wird gesetzt.
<> Change Variable [AIndexCounter] += 1
<> Change Variable [V[AIndexCounter]] = V[AValue]
Pflanzenevent Seite 1 (keine Startbedingungen, On Key Press):
<> Comment: Diese Eventseite wird gecallt wenn das Event respawnt wird
<> Move Event: This Event => Change Event Graphic (Die Grafik die die Pflanze im Normalfall haben soll)
Pflanzenevent Seite 2 (keine Startbedingungen, On Key Press):
<> Comment: Diese Eventseite wird gecallt wenn das Event deaktiviert wird
<> Move Event: This Event => Change Event Graphic (Leeres Tile im Upper Layer oben links)
Pflanzenevent Seite 3 (keine Startbedingungen, On Key Press):
<> Comment: Diese Eventseite wird im Normalfall gecallt (wenn der Spieler das Event anspricht)
<> Comment: Hier wird der Schlüssel zusammengebaut. Er besteht aus Map ID * 1000 + Event ID, also z.B. 34009 für Map 34, Event 9
<> Change Variable [AKey] = Map ID of This Event
<> Change Variable [AKey] *= 1000
<> Change Variable [X] = X of This Event
<> Change Variable [Y] = Y of This Event
<> Get Event ID (V[X], V[Y]) => [EventID]
<> Change Variable [AKey] += V[EventID]
<> Comment: Der aktuell gespeicherte Wert für dieses Event wird aus dem assoziativen Array gelesen. Ist er 0, heißt das, das Event ist aktiv!
<> Call Common Event: GetAssocValue
<> Fork Condition: If V[AValue] == 0
....<> *********************************** HIER CODE EINFÜGEN DER BEIM ANSPRECHEN DES AKTIVEN (!) EVENTS PASSIEREN SOLL, z.B. "Du hast die Pflanze gepflückt" o.ä.
....<> Comment: Das Event wird jetzt deaktiviert.
....<> Change Variable [PageID] = 2
....<> Call Map Event: ID V[EventID], Page V[PageID]
....<> Change Variable [AValue] = V[GlobalTimer]
....<> Comment: ***** HIER DIE DAUER IN SEKUNDEN EINSTELLEN DIE DAS EVENT ZUM RESPAWNEN BRAUCHT! *****
....<> Change Variable [AValue] += 300
....<> Comment: Der Zeitpunkt, zu der das Event respawnt werden soll, wird im assoziativen Array gespeichert.
....<> Call Common Event: SetAssocValue
....<>
: End Case
Parallel Process Common Event: "TimerUpdate"
<> Comment: Dieses Common Event updatet den Timer und sorgt dafür dass deaktivierte Events beim Mapwechsel automatisch wieder deaktiviert werden.
<> Label: 1
<> Change Variable [TMapID] = Map ID of Hero
<> Comment: In FrameCounter wird die Anzahl Frames seit der letzten Sekundenzählung gespeichert. Eine Sekunde hat 60 Frames.
<> Comment: GlobalTimer enthält die Anzahl Sekunden seit Beginn des Spiels. Ist FrameCounter 0, gilt eine Sekunde als abgelaufen und GlobalTimer erhöht.
<> Comment: Zu Beginn des Spiels ist FrameCounter 0, GlobalTimer wird also sofort um 1 erhöht, dadurch ist es nie 0 (was wir ja als "Event aktiv" verwenden).
<> Fork Condition: If V[FrameCounter] == 0
....<> Change Variable [GlobalTimer] += 1
....<> Comment: Alle Elemente des assoziativen Arrays werden abgeklappert.
....<> Change Variable [TIndexCounter] = 5000
....<> Label: 2
....<> Change Variable [TIndexCounter] += 1
....<> Change Variable [TTempKey] = V[V[TIndexCounter]]
....<> Comment: Ist der Schlüssel 0, wäre das Ende der Liste erreicht.
....<> Fork Condition: If V[TTempKey] != 0
........<> Change Variable [TIndexCounter] += 1
........<> Change Variable [TTempMapID] = V[TTempKey]
........<> Change Variable [TTempMapID] /= 1000
........<> Comment: Nur Events auf der aktuellen Map werden berücksichtigt.
........<> Fork Condition: If V[TTempMapID] == V[TMapID]
............<> Change Variable [TTempValue] = V[V[TIndexCounter]]
............<> Comment: Ist das Event bereits aktiv, weitersuchen
............<> Fork Condition: If V[TTempValue] == 0
................<> Go To Label: 2
................<>
............: End Case
............<> Comment: Ist der Respawnzeitpunkt erreicht oder überschritten, wird das Event respawnt.
............<> Fork Condition: If V[TTempValue] < V[GlobalTimer]
................<> Comment: Wert wird auf 0 für "Event aktiv" gesetzt und Eventseite 1 aufgerufen (wo die Grafik auf Normalgrafik geändert wird).
................<> Change Variable V[V[TIndexCounter]] = 0
................<> Change Variable [TTempKey] Mod= 1000
................<> Change Variable [TPageID] = 1
................<> Call Map Event: ID V[TTempKey], Page V[TPageID]
................<>
............: End Case
............<>
........: End Case
........<> Go To Label: 2
........<>
....: End Case
....<>
: End Case
<> Comment: Wenn die Map gewechselt wurde, werden alle Events auf der neuen Map bei Bedarf deaktiviert, wenn sie nicht aktiv sein sollen
<> Fork Condition: If V[TMapID] != V[TLastMapID]
....<> Change Variable [TLastMapID] = V[TMapID]
....<> Comment: Alle Elemente des assoziativen Arrays werden abgeklappert.
....<> Change Variable [TIndexCounter] = 5000
....<> Label: 3
....<> Change Variable [TIndexCounter] += 1
....<> Change Variable [TTempKey] = V[V[TIndexCounter]]
....<> Comment: Ist der Schlüssel 0, wäre das Ende der Liste erreicht.
....<> Fork Condition: If V[TTempKey] != 0
........<> Change Variable [TIndexCounter] += 1
........<> Change Variable [TTempMapID] = V[TTempKey]
........<> Change Variable [TTempMapID] /= 1000
........<> Comment: Nur Events auf der aktuellen Map werden berücksichtigt.
........<> Fork Condition: If V[TTempMapID] == V[TMapID]
............<> Change Variable [TTempValue] = V[V[TIndexCounter]]
............<> Comment: Nur deaktivierte Events werden berücksichtigt.
............<> Fork Condition: If V[TTempValue] != 0
................<> Comment. Eventseite 2 wird aufgerufen damit das Event unsichtbar (und durchgängig) wird.
................<> Change Variable [TTempKey] Mod= 1000
................<> Change Variable [TPageID] = 2
................<> Call Map Event: ID V[TTempKey], Page V[TPageID]
................<>
............: End Case
............<>
........: End Case
........<> Go To Label: 3
........<>
....: End Case
....<>
: End Case
<> Comment: Eigentlich ist am Ende eines PP automatisch ein 1-Frame-Wait, aber um auf Nummer sicher zu gehen, machen wir das Wait selber und verwenden Label 1 als Loop.
<> Wait 0.0s
<> Comment: FrameCounter wird erhöht und wenn er 60 wäre, auf 0 gesetzt.
<> Change Variable: [FrameCounter] += 1
<> Change Variable: [FrameCounter] Mod= 60
<> Go To Label: 1
Wow, danke für die Mühe!
Habe das Skript so umgesetzt, aber das Spiel stürzt ab sobald ich es starte mit der Meldung: "Eventscript referenced an event that does not exist."
Das bezieht sich auf den ersten Call Map Event Befehl im Update Timer CE: ................<> Call Map Event: ID V[TTempKey], Page V[TPageID]
Wenn der weg ist, stürzt das Spiel zwar nicht ab, aber es stockt für einige Sekunden, danach gehts kurz weiter, aber dann wieder Pause.
Was genau muss ich eigentlich bei: ....<> Comment: ***** HIER DIE DAUER IN SEKUNDEN EINSTELLEN DIE DAS EVENT ZUM RESPAWNEN BRAUCHT! *****
eingeben? Eine fork condition, die die GlobalTimer Variable abfragt?
Zuerst hab ich noch einen kleinen Fehler gefunden (bzw. das macht es halt suboptimal):
Vor der Zeile "<> Comment: Ist der Respawnzeitpunkt erreicht oder überschritten, wird das Event respawnt." muss folgendes eingefügt werden:
............<> Comment: Ist das Event bereits aktiv, weitersuchen
............<> Fork Condition: If V[TTempValue] == 0
................<> Go To Label: 2
................<>
............: End Case
Zu deinem ersten Problem: Ich vermute mal, du hast irgendwas falsch nachgebaut. Ich verwende hier C-Notation für Forks, d.h. "==" heißt equal, "!=" heißt not equal. Es schaut für mich aus als wenn du bei "<> Fork Condition: If V[TTempKey] != 0" statt "not equal" "equal" eingestellt hättest... Außerdem stelle sicher, dass V[...] und V[V[...]] richtig eingestellt ist (das erste ist "Variable", das zweite "Variable No.").
Zu deiner zweiten Frage: Das bezieht sich auf die Zeile drunter, "<> Change Variable [AValue] += 300". Ich hab da im Moment 300 eingestellt, das wären 5 Minuten.
Dass "!=" not equal heißt wusste ich in der Tat nicht. Jetzt ruckelt und stürzt auch nichts ab. Aber das Respawnen scheint nicht zu funktionieren bzw. wenn die Map verlassen wird und dann gleich wieder betreten wird ist die Pflanze wieder sichtbar, egal auf was die Variable [AValue] an der betreffenden Stelle gesetzt wurde.
Schick mir doch mal das Projekt oder zumindest die Database und die Map-Datei, dann muss ich das Skript nicht selber auch noch nachbauen um es zu testen!
Der grüne Schleim ist die Pflanze.
Sry, war zum Teil mein Fehler.
Dein Fehler war: du hattest noch zweimal "equal" statt "not equal" drin und einmal "Modulus" statt "Divide".
Mein Fehler war dass ich einmal "TMapID" und einmal "MapID" in TimerUpdate verwendet habe, obwohl es dieselbe Variable sein sollte. Ich hab jetzt überall TMapID verwendet.
Außerdem hab ich bemerkt dass "<> Change Variable [TMapID] = Map ID of Hero" in TimerUpdate am besten direkt unter "<> Label: 1" gehört und noch ein paar andere Kleinigkeiten korrigiert...
Ich hab jetzt alles korrigiert, es läuft jetzt. Ich hab gleich 4 Pflanzen-Schleime hingepackt und statt 5 Minuten 5 Sekunden eingestellt sodass man den Effekt gut testen kann.
http://share.cherrytree.at/showfile-...st_projekt.rar
Verstehst du eigentlich, wie das Skript funktioniert? :D
Ach Mann, dabei hab ich alles nochmal gründlich durchgeguckt -.- Tut mir Leid. ^^"
Ja, ehh, nein... nicht ganz. Wie die Funktionsweise dahinter ist schon, aber im Detail nicht so richtig. ^^"
Mir ist aufgefallen, dass es vorkommen kann, dass man eine Pflanze mehrmals ansprechen kann nachdem sie verschwunden ist
und somit natürlich zum Ausnutzen verleitet falls jemand ausversehen noch einmal Enter drückt. Also ein Bug ;D
Ich weiß nicht welchem Muster das folgt, aber ich glaube die ersten Pflanzen sind nicht betroffen, sondern welche die danach respawnen während man noch auf der Map ist.
Bin mir aber da auch nicht ganz sicher.
Du sagtest man kann 1000 solcher Events pro Map haben? Oder insgesamt? Das heißt es gibt keine bestimmte Gesamtzahl, die nicht überschritten werden darf, also global?
Die einzige Grenze stellt also das Map Limit dar? Und wieviele Maps sind jetzt noch möglich? Werden die bis zu 1000 Events vom 9999 Map Limit subtrahiert?
Ich glaube mein Fehler war in GetAssocValue:
Statt:
<> Fork Condition: If V[ATempKey] != 0
....<> Fork Condition: If V[ATempKey] != V[AKey]
........<> Comment: Weitersuchen
........<> Go To Label: 1
........<>
....: Else Case
........<> Comment: Schlüssel gefunden, Wert einlesen
........<> Change Variable [AIndexCounter] += 1
........<> Change Variable [AValue] = V[V[AIndexCounter]]
...gehört:
<> Fork Condition: If V[ATempKey] != 0
....<> Change Variable [AIndexCounter] += 1
....<> Fork Condition: If V[ATempKey] != V[AKey]
........<> Comment: Weitersuchen
........<> Go To Label: 1
........<>
....: Else Case
........<> Comment: Schlüssel gefunden, Wert einlesen
........<> Change Variable [AValue] = V[V[AIndexCounter]]
Das Limit ist übrigens so gemeint, dass keine Event ID einer Pflanze je höher als 1000 sein darf. Insgesamt ist es aber egal wie viele Pflanzen zu pflanzt.
Das Limit entsteht aus dem Variableninhaltslimit des RM2k3. Eine Variable kann von -9999999 bis +9999999 gehen. Das Skript kodiert eine Pflanzen-ID als "Map-ID * 1000 + Event-ID", also z.B. 147092 wenn die Map-ID 147 und die Event-ID 92 ist, und so entsteht das Limit. Wenn man tatsächlich mehr als 1000 Events auf einer Map haben sollte (was mich wundern würde), kann man die Zahl "1000" in den Skripts ändern sodass er dann z.B. "Map-ID * 2000 + Event-ID" rechnet, was natürlich dann die maximale Anzahl Maps halbiert.
Okay, jetzt funktioniert alles! Vielen vielen Dank für deine Hilfe! :D
Gut, das mit dem Limit hab ich jetzt auch verstanden.
Mhhh... Habe jetzt irgendwie noch ein Problem mit den Conditions:
Wenn ein Monster einen Status mit "No Action Allowed" (sowas wie z.B: Schlaf) hat, dann blinkt es trotzdem auf, der Enemy Attack Sound kommt und Punch A wird ausgeführt aber nicht gezeigt, nur der Sound (also die drei Hit sounds). Wenn ich Punch A von den Animations lösche kommt letzteres natürlich nicht mehr. Die Monster greifen nicht an, und machen auch sonst nichts außer das was ich genannt habe, wenn sie den Status haben. Meine Monster besitzen keine Standard Attacke sondern nutzen immer Skills als "standard" Attacken.
Ich benutze ja DynRPG. Ist das vielleicht so gewollt oder auch im standard normal?
Dann habe ich noch ein Problem und zwar:
Ich habe diesen Zustand (Schlaf) darauf eingestellt, dass er weggeht wenn der Betreffende Schaden nimmt, Rundenanzahl auf 0 und Chance auf Heilung in jeder Runde auf 0% (auch mal auf 999 und 100%). Aber es scheint, dass einer meiner Charaktere bei manchen Angriffen egal ob er Schaden macht oder nicht, das Monster nicht aufwecken kann. Durch welche Art Schaden geht der Status weg und durch welchen nicht? Der andere Charakter kann Angreifen und Skills benutzen, beides führt zum verschwinden des Status beim Gegner, sofern er Schaden macht.
Zum Standardangriff:
Es gibt wenig bis nichts, was davon abhält, einen Skill zu bauen, der einfach 100% AP + 0 Basic Effect enthält und 0 Mana kostet, das wäre dann ein Ersatz-Standardangriff. Dadurch ist man das Problem los mit Animation 0 und dem Sound aus der DB und mit einem Arbeitsaufwand von weniger als 25 Sekunden pro Skill kann man Monstern Standardangriffe geben, die zu ihnen passen zB einen Schwertangriff für den Schwertkämpfer und einen Pfeilangriff für den Bogenschützen statt einem Knüppelangriff für den Schwertkämpfer, einem Knüppelangriff für den Bogenschützen, einem Knüppelangriff für den Magier, einem Knüppelangriff für den Drachen. You get it i guess ;-)
Zum Sound in der DB:
Stell den Standard-Attacksound mal auf einen anderen weniger penetranten Sound ;-) Ich hatte mal den Bug irgendwo, dass sich der Maker einen Sound "gemerkt" hat, obwohl der in der DB nicht mehr gewählt ist.
@Corti Ich habe ja geschrieben, dass die Monster keinen standard Angriff besitzen. Z.B.: Eine Schlange hat den Skill "Biss" als Standardangriff der keine MP kostet und dann noch einen "Giftbiss" der MP kostet als special sozusagen. Das Problem ist ja, dass wenn die Gegner mit einem "No Action Allowed" Status behaftet sind, sie trotzdem einen Zug ausführen und zwar in Form vom Enemy Attack sound und dem Punch A Sound OHNE Animation. Ich dachte eigentlich der ATB des Gegners sollte freezen wie bei den Player Chars, wenn sie mit so einem Status befallen sind. Ist zumindest für meine Pläne mit dem standard KS suboptimal, wenn die Gegner trotzdem einen Zug ausführen.
Was genau meinst du mit:
Meinst du jetzt den "Enemy Attacks" Sound im System Reiter? Oder kann man irgendwo den Sound bzw. Animation der standard Attacke der Gegner bestimmen? Falls man ihnen eine gibt.
Ach und wo wir schonmal dabei sind. Wie genau wirkt sich die Priorität der Aktionen bei den Monstern aus? Wie siehts mit 50 zu 60 oder 10 zu 90 aus?
Ehm... hehe... jaa... ^^"
Aus mir unerfindlichen Gründen funktioniert die Terraintransparenz nicht mehr.
Keine Transparenz Option im Terrain Reiter bei "Sprite Display" scheint zu greifen.
Ja, die Tiles sind richtig ausgewählt und vorher klappte alles auch wunderbar.
Weiß einer vielleicht woran das liegen könnte?
Nur mit DynRPG? Auch ohne Plugins?
Ich meine, nicht dass da wie beim CharExpand-Patch irgendwo noch ein Fehler schlummert (warum der CharExpand-Patch die Transparenzen zerschießt hab ich nämlich auch nie rausgefunden).
Naiiin.
Ok das ist jetzt echt blöd.
Ich hab noch dazu keine Ahnung was da schuld sein kann, weil eigentlich nichts etwas in diesem Bereich ändert...
Ich schreibs mal auf, wie ihr wisst hab ich ja im Moment keine Zeit. :-/
@Cherry
Hoffe du bist an dem Problem nicht verzweifelt. Viel Erfolg, falls/wenn du dich dransetzt ^^
Ich habe mal eine Frage zu den Pictures.
Ich wollte vorhin ein Picture mit der Göße von 640x560 Pixeln importieren. Nun gibt der Maker aber eine Meldung ab die da lautet: "Invalid image size".
Farben habe ich natürlich auf 256 bzw. 8 Bit runtergesetzt und hatte vorher auch keine Probleme in der Richtung.
Nimmt der Maker nur Bilder bis oder nur von einer bestimmten Größe an? Ich habe zu Testzwecken einfach mal zwei Bilder der Göße 960x720 und 640x480 Pixel versucht zu importieren. Das letztere wird angenommen das erstere wiederrum nicht.
Nun habe ich mal ein paar Maker Games durchstöbert und habe im Pic Ordner vom Spiel Epic Fail Saga Bilder dieser Größenordnung vorgefunden von denen ich manche in mein Projekt importieren konnte und andere nicht.
Woran liegt das?
Entweder durch reinkopieren in den Ordner oder mit dem Rm2k9 Ultimate importieren ;)
(Rate zu letzteren ;))
Mhh...
Ich hab es jetzt einfach reinkopiert (das Projekt vorher natürlich gesichert). Scheint alles zu funktionieren.
Hat das irgendwelche Nachteile? Kann da irgendwas passieren? Es gab doch mal diesen Map Tree Bug. Könnte der durch sowas auftreten?
Wie haben es eigentlich Super17 und Ascheherz bei Epic Fail Saga gemacht?
Könnte man vielleicht mit dem Resource Hacker irgendwas in der RPG_RT.exe bzw. RPG MAKER 2003.exe verändern damit dies ohne weiteres möglich ist?
Benutz den Ultimate. Reinkopieren kannst du wie du willst. Vermeide es Daten in Verwendung zu löschen / zu überspeichern. Dann lieber Maker beenden und dann aufräumen.
Was den bug angeht, gewöhn dir an Sicherheitskopien zu machen. Alle paar Tage oder nach Arbeitsschritten, die du nicht verlieren willst.
Habe mich gerade erst an das normale Interface gewöhnt, der Ultimate ist glaube ich noch etwas zu viel im Moment.
Also hat das keinerlei negative Auswirkungen?
Meinst du die manuelle Löschung/Überschreibung? Oder auch via Resource Manager?
Sicherheitskopien mache ich regelmäßig. Also du meinst unabhängig vom manuellen Kopieren von Ressourcen, so als allgemeinen Tipp, falls der Bug auftreten könnte?
Also ich habe folgendes, leicht seltsames Problem:
Wenn ich versuche Makerspiele auf meinem Laptop zu spielen, funktionieren die Pfeiltasten nicht richtig: Im Menü kann ich nur nach unten scrollen, nach oben geht nicht
und im Spiel an sich geht der Held von automatisch aus nach oben, wenn ich nach oben drücke, geht er nach links und wenn ich nach links drücke, bleibt er stehen, die anderen
beiden Tasten funktionieren gar nicht. :o Außerdem scrollt das Spiel im Hauptmenü automatisch die ganze Zeit nach unten, was ich nur mit einem Drücken der Shift-Taste aufhalten kann. Dies gilt für beide Maker, 2k und 2k3 :/
Bisher hab ich folgende Sachen ausprobiert:
- Maker neu installieren
- RTP neu drauf ziehn
- Mit GlovePie andere Eingabegeräte benutzt
Hat leider alles nicht funktioniert, an meinem normalen PC habe ich dieses Problem nicht.
Ich würde mich sehr freuen, wenn ihr mir helfen könntet, es macht nähmlich nicht besonders Spaß zu makern, wenn man sein Spiel nicht testen kann :D
Danke im Vorraus :)
Mv(erzweifelten)G,
the Fireman ._:
eine kleine frage:
weiß einer wie lange der wait befehl in einem Move Event ist ?
@the Fireman
Der Maker benutzt die Tasten h,j,k,l und 8,4,6,2 auf dem Numpad neben den Pfeiltasten zum laufen.
Sind diese in irgendeiner Form bei dir belegt oder funktionieren nicht richtig?
@tjaschicksal
Ich glaube der Wait Befehl ist 0,35 sek. lang. Jedenfalls laut meinen Tests :D
@the Fireman:
Hast du vllt ein Gamepad/Controller angeschlossen?
Wenn ja, entferne denn^^
Das ist einer der häufigsten Problemen ;)
Ansonsten würd ich mal gucken, ob die Tastatur ein Treiber hat und du diesen eventuell nicht Installiert hast, wobei ich er auf das erste Tippe^^
Also die anderen Tasten gehen auch nicht und ein Gamepad etc bestitze ich gar nicht, ausser einer Wiimote, die ich über GlovePie laufen lassen kann :/
Auserdem habe ich noch den kreset von Cherry ausprobiert, was auch nicht funktionier hat :(
Aber dennoch danke für eure Tipps :) Habt ihr vlt noch irgendwelche Ideen?
MfG
the Fireman
Jo, Maker deinstallieren und dann neuinstallieren.
Mehr fällt mir nicht ein :(
hey leute ..
ehm mal ne frage zum Standart KS des Rm2k3
das battle command " link to event" ..... was kann man dammit so alles anfangen ?
ich hatte versucht dammit eine art " blue magic " in mein project ein zu bauen
also : Character X lernt magie Y von monster Z an sich klappt das ganze nur
kann ich keinerlei switches oder variablen einbaun die verhindern das man das den ganzen kampf über macht
also character x kann also in jeder runde diese neue magie erlernen was irgendwie blöd ist ...
ich weiß als alternative könnte ich es ja als skill umwandeln
aber das wäre irgendwie nicht so stylish wie als battle command
also könnt ihr mir da weiter helfen ?
"Link to Event" ist ein leerer Befehlstyp der dem Zweck dient, dass du damit BattleEvent-Seiten in den Monstergroups ohne Nebeneffekte (wie Angriffe, Zielauswahl etc.) aufrufen kannst in dem du eine "Hero[X] uses [EigenesLinkToEvent] Command" - Eventpage erstellst.
Du kannst den Helden per EventCode BattleCommands wegnehmen und hinzufügen. Auf die Art und Weise könntest du den als "Link to Event" realisierten "Magie vom Feind klauen"-Befehl entfernen nachdem er ausgeführt wurde.Zitat:
ich hatte versucht damit eine art " blue magic " in mein project ein zu bauen
also : Character X lernt magie Y von monster Z an sich klappt das ganze nur
kann ich keinerlei switches oder variablen einbaun die verhindern das man das den ganzen kampf über macht
PS: Solltest du dir dringendst mal ansehen:
http://www.multimediaxis.de/threads/...37#post2982737
Ich benutze den Maker schon lange! (RM2000)
Aber es gibt ein Geheimnis hinter das ich nie gekommen bin.
Wie kann man einstellen das der Held stehenbleibt? Bei einer Szene in der eine Person vom Helden weg läuft kann man sich, während sich das Event (andere Figur) bewegt und kein Text angezeigt wird, bewegen. Doch man soll sich an dieser Stelle nicht bewegen können.
Wie mache ich das?
Eine direkte Funktion gibt es dafür nicht, aber du erreichst dasselbe, indem du ein normales Autostart-Event aktivierst.
Es gäbe u.a. eine Holzhammermethode, wo du die Blickrichtung im MoveEvent-Fenster fixierst ("Lock Facing" heißt der Befehl glaube ich) und um den Helden herum via ChangeEventLocation Events platzierst, die auf "Same Layer as Hero" eingestellt sind - aber das ist so umständlich, dass es sich eigentlich nur lohnt, wenn das mit dem Autostart aus irgendwelchen Gründen nicht klappen sollte, etwa wenn es sich mit anderen Events in die Haare bekommt.
Danke! Jetzt geht es.
So isses, aber denk an den verlinkten Fix von Cherry, sonst gibts eventuell Abstürze.
Ich habe noch eine Frage! (RM2000)
Der Held soll einen Gegenstand bekommen mit dem er sofort ausgerüstet ist. Ist das möglich?
Klappt Super! Danke.
Oh Gott!
Ich muss schon wieder nerven.
Ich möchte das man auf der Worldmap so eine kleine Karte hat in der man sich, als kleinen Punkt, sieht.
Wie ich das anstelle weiß ich und zur not kann ich ja auch ein vorgefertigtes Skript benutzen.
DOCH:
Wie nehme ich das Bild der Worldmap auf?
Hi Elektrohexer
Das ist eigentlich ziemlich Simpel.
Von der Map der Weltkarte Screenshots machen (Prt Scr - Taste) und in Paint oder einem anderen Grafik-Programm einfügen. Das Bild dann zusammenschnippeln und verkleinern, Farben ändern usw. wie man es halt gerne will. Übrigens, ich würde denn Screenshot direkt im Editor machen.
Guten Abend,
ich weiß nicht, woran es liegt, aber ich hab ein Problem (ein recht simples und stupides...)
Ich möchte zwei Pictures anzeigen lassen in der Database über Events. Das ganze wird durch einen TAB ausgelöst, welcher sich auf der Map befindet.
http://s3.imgimg.de/uploads/Problemeb0c1110png.png
Benutze den RM2003. Es dürfte doch eigentlich so stimmen, doch leider ruckelt es, sobald man sich bewegt. Was ist das Problem?
In dem Event sollen beide Bilder angezeigt werden, hab es schon mit zwei versucht, doch da ruckelt es auch...
Common Events kann man scheinbar nicht per Erase Event löschen. Aber bei deinem Beispiel sollte es doch auch reichen, wenn du das Event einfach einmalig per Call Event aufrufst, oder?
Das ganze soll eben auf jeder Map zu sehen sein, nicht einmalig schnell angezeigt werden.
Mit einem Picture lief die Sache eigentlch ohne Probleme, erst ab dem zweiten klappt es nicht mehr...
Angenommen du hast ein Event auf der Map und ein CommonEvent, in dem die Bilder angezeigt werden.
Dann sollte in deinem Event folgendes stehen.
- CallEvent ( dein CommonEvent)
- EraseEvent
Das EraseEvent löscht das Event dabei nicht wirklich. Es wird nur zeitweise deaktiviert und wenn die Map das nächste mal betreten wird ist es wieder da, wird aufgerufen und deaktiviert sich erneut. Das ist der einfachste Weg um Dinge beim Betreten der Map passieren zu lassen.
gibt es eine Möglichkeit ein PP, welches per Switch gestartet und beendet wird, wieder vom Anfang starten zu lassen?
Wenn ich den Switch aus und wieder an mache, dann setzt das Event da fort wo ich es unterbrochen habe.
Jetzt such ich nach einer Möglichkeit das Event wieder komplett vom Anfang an laufen zu lassen .
Ich hätte auch mal eine kurze Frage:
Wenn ich viele Abfragen habe, was ist weniger rechenintensiv? Wenn ich das Ganze mittels :ELSE CASE ineinander verschachtel oder wenn ich die ganzen Forks einfach hintereinander weg platziere?
Wenn ich mal rein von der Abfolge der Schritte gehe, funktioniert da die Schachtelung schon besser, wenn du die weg lässt,
müssen auch noch alle anderen Sachen vom Eventinterpreter durchgegangen werden, die nach dem Treffer noch kommen.
Falls also nicht gerade die allerletzte Abfrage erst positiven Rückschlag gibt, ist das mittendrin sehr verschwenderisch.
Man kann zwar aus direkt untereinandergeschriebenen Bedingungen mit Labeljumps entkommen, aber das ist dann auch
nochmal ein Befehl mehr, der dann obendrein absuchen muss "Wo ist denn das jetzt?".
ganz klar wenn du mit ELSE arbeitest. Stell dir nur mal vor du hast 1000 forks. Wenn jetzt der erste zutrifft dann kann ja auch keiner der anderen 999 mehr zutreffen und deshalb lohnt es sich nicht diese auch alle abzufragen. Wenn du stattdessen else benutzt, dann schaut der sich die restlichen abfragen die bei else drinnen stehen erst gar nicht an und somit ist das ressourcenschonender.
Wie viel genau das jetzt wirklich bringt weiß ich nicht aber es sollte nicht wirklich viel sein, sodass man es auch einfach nur wegen der Übersicht ohne else machen kann.
Beim Vx hab ich die Erfahrung das das Elsecase verfahren Resourcen fressender ist.
Wenn du eine verschachtelung mit Else Case hast fragt er nicht nur ab ob es zutrifft, sondern muss jedesmal noch abfragen was passiert wenns nicht zutrifft.
Lässt man das Else weg, so muss der Maker nur abfragen obs Zutrifft:Ja/Nein aber kein extra Else. Mit Else wäre Resourcenfressender wenn nicht der erste Fork gleich zutrifft.
Damit der Maker nicht 999 Forks durchgehen muss wenn die Erste zutrifft, kann man folgendermaßen lösen:
1.Per Label, ganz unter alle Forks machst du ein Label, nennen wir es "Hier weiter Rechnen" nun kopierst du in jede Fork nur noch unter den Code im Fork ein Jump to Label "Hier weiter Rechnen".
Somit würden nicht immer alle Forks abgefragt werden, wenn der erste zutrifft.
2.Oder man macht nach den Forks falls sowieso kein Eventcode mehr folgt , den Befehl End Event Prozessing (Nicht Erase Event).
Mit End Event Prozessing springt die Codeabfrage zum ende des Events. Bei Paralellen Events fängt die abfrage also erneut an.
3. Benutzte den Elsecase einer Fork nur dann wenn du ihn wirklich brauchst bei deiner Schaltung.
Hoffe das hilft irgendwie.
Am besten könnte man dir helfen wenn man wüsste was du umsetzen willst.
Gruß Bex
@Bex:
Ganz einfach:
bzw. ebenCode:<>If Var[0001] = 1
..<>blubb
:END CASE
<>If Var[0001] = 2
..<>blubb
:END CASE
<>If Var[0001] = 3
..<>blubb
:END CASE
[...]
<>If Var[0001] = 99
..<>blubb
:END CASE
Ich muss eine einzelne Variable abfragen und abhängig vom Wert eine Aktion ausführen. Welche das ist sei hier mal dahingestellt, da ich die Frage allgemein meine. Abfragen via Pointer sind allerdings natürlich nicht möglich, da die Aktionen keine Variablen als Referenzwert zulassen. (bspw. Tint Screen, Show Picture (ohne Patch jedenfalls), etc.)Code:<>If Var[0001] = 1
..<>blubb
:ELSE CASE
..<>If Var[0001] = 2
....<>blubb
..:ELSE CASE
....<>If Var[0001] = 3
......<>blubb
....:ELSE CASE
......[...]
....:END CASE
..:END CASE
:END CASE
Das Script an dem ich sitze (eine überarbeitete Version des Textsystem aus meinem Szenencontest-Projekt) braucht ca. 99 solcher Abfragen und diese müssen schnell und teilweise parallel zu ein paar anderen Events laufen. Letzteres lässt sich nicht vermeiden, da eben parallel zur Textanzeige auch andere Events laufen. Da der Spaß möglichst auch auf meinem Netbook noch flüssig sein soll, versuche ich nun, die Stellen, die in meinen Augen Knackpunkte sind, direkt zu optimieren soweit dies der Maker zulässt.
Btw, dein Vorschlag unter Punkt 1 wäre doch im Prinzip das selbe wie die Else-Case-Variante? Oder geht der Maker selbst dann den Rattenschwanz durch, wenn bei "If V[1]=3" tatsächlich 3 rauskommt? Else Case stellt ja soweit ich das bisher verstanden habe genau das sicher: Dass der Maker eben nicht alles durchgeht, sondern nur seine Abfragen macht, wenn eben der "'ansonsten'-Fall" eingetroffen ist und andernfalls zum passenden :END CASE springt, also das, was bei dir das Label bewirkt.
@Magicmaker:
Also die Elsecase-Variante, wenn ich das richtig verstehe? Gracias, das bestätigt meine Vermutung. (:
Sonst würde der Maker auch sehr paradox arbeiten bzw. die ganze elsecase-Funktion ad absurdum führen...
Elsecase Pyramide sind sollte man besser vermeiden, weil's schnell unübersichtlich wird, und es ist kostet Generel mehr leistung, als wenn man die branches nach einander machen, kombiniert mit entweder einem label oder end event processing (je nach zweck), am ende jeden Fork zu machen.
z.b.
fork v = 1
blablah
jump to label 1
end
fork v = 2
blabla
jump to label 1
end
...
fork v = 99
blabla
jump to label 1
end
label 1
blabla (weiterem code)
Besser, wäre es möglicherweise wenn du aber statt so eine reihe von branches machst, einfach nur ein map event mit 99 seiten machst, gibst den event id in einem variabel rein, und lässt den anderen variabel entscheiden welcher event page ausgeführt werden soll. Ins besondere wenn die werte des variabel von 1 bis 99 gehen, sollte dies um einiges besser sein als ein grosses haufen von branches zu haben
Bloß in diesem speziellen Fall hab ich ein Common Event, ich könnte also maximal das ganze Messagesystem in MapEvents packen.
Wobei, wenn ich es schaffe, das auf ein Event zu Begrenzen... hrm...
Danke auf jeden Fall, der Ansatz hilft mir schon weiter. (:
Ich bin trotzdem neugierig.
Was genau wird mit 99 Forks bestimmt/gemacht/ausgelöst? Ohne diese Info kann man nicht sagen ob du es unnötig kompliziert angehst.
Vieleicht lässt sich das anders machen oder irgendwie aufteilen.
@Kazesui
Danke für das Beispiel^^ nicht das sich noch falsche Gerüchte als Eventweissheiten einbürgern.
Gruß Bex
Mjamm mjamm... weiß jemand, ob und wie man Cherrys 100 Pic Patch und sein Better AEP in eine RPG-RT.EXE bekommt? :)
(benutze rm2k3 1.08)
Ich hoffe, es kann mir jemand helfen. Ich hatte vorher ein kleines Netbook. Darunter liefen die spiele des RPG Maker 2000/2003 wunderbar. Jetzt habe ich einen neuen Laptop und der will mir den Maker unter 64 Bit nicht installieren, weil das Programm unter 32 Bit läuft. Auch die Spiele kann ich dann so nicht spielen. Weiß einer, einen Rat, wie ich den RPG Maker 2000 unter 64 Bit installieren und zum laufen bringen kann?
Hast du es schon mit "Als Administrator ausführen..." oder mit dem Kompatibilitätsmods versucht ?
Habe es unter Administrator ausführen gemacht und es läuft jetzt. Gott sei Dank. Jetzt kann ich an meinem Projekt weiter arbeiten. :D
Gibt es ein Plugin/Patch, der mir erlaubt, im rm2k3 die Tasten STRG und ALT zu belegen ? Wenn ja: kann mir den bitte jemand schicken ?
Dazu brauchst du das DynRPG Plugin von Cherry. Hier geht's weiter: http://forum.rpg2000.4players.de/php...hp?f=3&t=98107
Gibt es eine genauere Abfrage für eine Positionsabfrage wenn man z.Bsp. einen gegensatand auffängt als die X,Y Positionen abzufragen oder arbeitet man dann besser mit der Bildauschnittsabfrage?
Lg
Multi-Master1988