PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Technik-Sammelthread für Probleme und Antworten



Seiten : 1 2 3 4 [5] 6

Quetschi
31.05.2013, 12:54
Ja, ich wollte das Standardmenü benutzen. Sonst hätte ich mir schon ein eigenes System gemacht. :'D
Deshalb wollte ich wissen ob man das als Alternative für jedes Level auf 100 setzen kann um somit in Kombination mit einem eigenem System ggf. "Prozente" anzuzeigen.

Corti
31.05.2013, 13:46
Du kannst per DynRPG im Hauptmenü die Exp-Anzeigen übermalen und was anderes hinpinseln ;-)
Kannst du etwas C++?

Quetschi
31.05.2013, 13:55
Okay. Gut zu wissen.
Naja vielleicht ein kleines bisschen. :'D Ich setz' mich mal dran und schau ob ich das hinbekomme. Wenn nicht, werd ich mich wahrscheinlich nochmal melden müssen.

Corti
31.05.2013, 14:23
Ich erspare dir mal etwas Gesuche, was folgt sind meist Stückchen aus meinen Plugins. Das wird dir nicht die Arbeit abnehmen, aber vielleicht ein wenig dabei helfen. Viel Erfolg.


Der Callback wäre "onFrame", das bedeutet "nachdem alles gezeichnet wurde", aber noch vor dem Einblenden.


/* This function is called after every frame (see details below!),
right after the current game scene was drawn, but before it becomes visible to the player.
You may draw on the screen in this function and it will appear on top of the normal graphics. */
void onFrame ( RPG::Scene scene )
{
(...)

}
http://rpg-maker.cherrytree.at/dynrpg/group__callbacks.html#gaeb3cc580d193d21358513fff5e1687c5

Dort fragste ab...


if ( scene == RPG::SCENE_MENU )
{
// also nur wenn man grad im Menü ist
(...)
}

Es folgt eine Funktion, die noch nicht Teil des DynRPG Patches ist, hat Cherry mal nachgereicht, findet man also nicht in der offiziellen Doku


int getMenuScreen() {
return (**reinterpret_cast<char ***>(0x4CDC60))[12];
}
/* Return values:
0 = main screen
1 = item screen
2 = item target selection
3 = skill screen
4 = skill target selection
5 = teleport screen
6 = equipment screen
7 = end confirmation screen
8 = status screen
9 = party order screen
*/
Damit kriegt man zu fassen, in welchem Menüscreen man ist.

Dann um zu wissen, wie viele Helden in der Party sind und welche...



RPG::Actor * actorCurrent;
for (int inLoop=0; inLoop< Global::kNumberOfHeros; inLoop++) // for each slot in party ( 0 -> 3 )
{
actorCurrent = RPG::Actor::partyMember(inLoop); // get actor on that position
if(actorCurrent != 0) // if zero, no actor has been returned
{
// Id in Actor-Klasse ist OneBased-Datenbank-ID
int heldenDBid = actorCurrent->id;
(...)
}
}

Und zuguterletzt:
EDIT::Vergiss das hier
// Auslesen der Farbdaten an Koordinate X,Y
int pixelFarbe = RPG::screen->canvas->pixel(x,y);

Siehe auch canvas -> scanline.
die Intwerte der Pixel sind 16Bit Farben

// In Makergrafiken ist der Maximalwert pro Farbkanal einem Teil der möglichen 16Bit gesamt
// Anordnung der Bits in einem 16Bit Pixel (RRRRRGGGGGGBBBBB)
// Max.Wert Rot : 31 (5 Bit )
// Max.Wert Grün: 63 (6 Bit )
// Max.Wert Blau : 31 (5 Bit )

Kazesui hat irgendwo mal den Sourcecode seines Blending-Plugins angeboten. In dem Quellcode könntest du dir abgucken, wie man Pixelwerte beeinflusst.
Zeichne es mit RPG::screen->canvas->draw(...) über, ist einfacher.

bugmenot
31.05.2013, 14:34
Überzeichnet dies auch den Text/Zahlen-Output, der im Menü normal erfolgen würde? (wird darunterliegender Text-Output resettet, bevor der neue gedruckt wird?)

Corti
31.05.2013, 14:52
In onFrame mit Scene = Menu kannst du das ganze Bild überzeichnen, musst es aber in jedem Frame aufs neue tun.

Morden
31.05.2013, 14:56
@Corti
Ist es nicht einfacher ein Bild zu laden oder per DrawText was zu erzeugen und dieses RPG::Image dann einfach auf den RPG::screen->canvas zu zeichnen? Denn immerhin zeichnest du so auch "über" allem, da deine Draw-Funktion ja erst dann ausgeführt wird, wenn der Screen schon soweit fertig gezeichnet ist.

@bugmenot
Wie schon eben geschrieben: Im onFrame()-Callback zeichnest du über den - bis dahin schon komplett vom Maker gezeichneten - Bildschirm. Außer der ScreenTransition - ich glaube das ist das Einzige, was über allem steht.

EDIT: Sehe gerade Corti war schneller^^

PeAcE
MorDen

Corti
31.05.2013, 14:59
@Morden: Hab bereits etwas reineditiert. Pixel sind da wirklich unnötig kompliziert, da war ich irgendwie betriebsblind als ich Codestücke aus meinem Plugin kopiert hab.



Außer der ScreenTransition - ich glaube das ist das Einzige, was über allem steht.
Im Kampfsystem die Menüs sind auch drüber.

Morden
31.05.2013, 15:02
Im Kampfsystem die Menüs sind auch drüber.

Tatsächlich? :O Ich muss gestehen, dass ich mich weniger mit DynRPG+StandardKS beschäftigt habe >.<
Da würde mich jetzt glatt interessieren, ob die Standard-MessageBox auch über allem ist. Das werde ich heute Abend wohl mal ausprobieren^^

EDIT: Ich hätte auch mal weiter denken können: Brauch doch denn einfach nur checken, ob onDrawSystemBackground() nach onFrame() ausgeführt wird >.< Dann könnte man in solch einem Fall nämlich einfach dort auf den Bildschirm zeichnen.

PeAcE
MorDen

Cherry
01.06.2013, 12:19
Im Kampfsystem die Menüs sind auch drüber.

Was? Über dem was du in onFrame gezeichnet hast? Das dürfte eigentlich nicht sein. Ich muss da mal nachforschen.

Eigentlich sollten wirklich nur Screentransitions (und Movies, iirc - und eventuell "Frames" von System2 aber ich weiß grade nicht ob das stimmt) den Bildschirm nach onFrame manipulieren können. Alle Kampfgrafiken sollten von der draw-Methode von TLcfgBattleScene gezeichnet werden, und onFrame wird immer nach der draw-Methode der aktuellen Scene aufgerufen...

"Über allem" kann man mit onDrawScreen zeichnen, aber das wird aufgerufen wenn aus Windows-Sicht der Fensterinhalt neu gezeichnet wird und das kann manchmal mehrmals beim selben Frame passieren, also sollte man beachten dass eventuell Sachen die man im vorigen onDrawScreen gezeichnet hat noch immer da sind.


EDIT: Ich hätte auch mal weiter denken können: Brauch doch denn einfach nur checken, ob onDrawSystemBackground() nach onFrame() ausgeführt wird >.< Dann könnte man in solch einem Fall nämlich einfach dort auf den Bildschirm zeichnen.]

Für die Messagebox? Eher nicht, denn onDrawSystemBackground bezieht sich nicht auf den Fensterhintergrund sondern auf den Menühintergrund (der normalerweise einfärbig ist). Das Callback ist dazu da, eigene Hintergründe zu zeichnen. Fenster erscheinen über dem Hintergrund, und auf der Map wird das sowieso nicht verwendet weil ja die Map da ist und kein Systemhintergrund.

Corti
01.06.2013, 17:31
Was? Über dem was du in onFrame gezeichnet hast? Das dürfte eigentlich nicht sein. Ich muss da mal nachforschen.

Alarm zurück. War ein Irrtum meinerseits. Bitte um Verzeihung.

Quetschi
01.06.2013, 20:11
Wie kriege ich es denn mit DynRPG hin, ein Bild anzuzeigen?
Ich geh mal stark davon aus, dass das hiermit geht:

void RPG::Canvas::draw ( int x,
int y,
RPG::Image * image,
int srcX = 0,
int srcY = 0,
int srcWidth = -1,
int srcHeight = -1
)


Aber wie genau funktioniert das? ._.
Bzw. der Teil mit dem Image...Ich hab mir jetzt ein Bild gemacht, welches ich dann einfach drüber legen würde. Aber wie sage ich dem Programm, dass es dieses Bild benutzen soll?

Corti
01.06.2013, 21:54
// Variable anlegen
RPG::Image *imageDings;

//Bild laden
imageDings = RPG::Image::create();
imageDings->useMaskColor = true;
imageDings->loadfromFile("Pictures\\Blabal.png",false);

// Bild anzeigen
RPG::screen->canvas->draw(x,y,imageDings,...);

// Bildressource freigeben
RPG::Image::destroy(imageDings);

________________________________________________________________________

Laden würde ich in "onInitFinished" machen, destroy in "onExit"

Cherry
02.06.2013, 09:05
Der Ordner heißt Picture, ohne "s" hinten, also Vorsicht beim Codekopieren, Quetschi!

Quetschi
03.06.2013, 15:44
Ich krieg das nicht hin. Scheint so, als ob ich mich doch nur minimal mit C++ auskenne und das "bisschen" schon überschätzt war. :/
Beim Compilen krieg ich keine Fehlermeldung und im Spiel (also im Menü) wird mir das Bild nicht angezeigt :/
Würde sich einer von euch eventuell dazu bereit erklären mir so etwas schnell zu basteln oder mal über meinen Code zu schauen? :x




#define AUTO_DLLMAIN
#include <DynRPG/DynRPG.h>
int mmscn;
bool onFrame(char*pluginName)
{
if (scene == RPG::SCENE_MENU)
{
mmscn = getMenuScreen();
{
return (**reinterpret_cast<char ***>(0x4CDC60))[12];
}
if (mmscn == 0)
{
RPG::Image *myExpImage;
myExpImage = RPG::Image::create();
myExpImage->useMaskColor = true;
myExpImage->loadfromFile("Picture\EXP_Percentage.png",false);
RPG::Actor * actorCurrent;
for (int i=0; i< Global::kNumberOfHeros; i++)
{
switch(i)
{
case 0:
RPG::Canvas::Draw(200, 41, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
break;
case 1:
RPG::Canvas::Draw(200, 99, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
break;
case 2:
RPG::Canvas::Draw(200, 157, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
break;
default:
break;
}
}
}
else
{
RPG::Image::destroy(myExpImage);
}
}
return true;
}

Nemica
03.06.2013, 16:06
Was tut das return-Statement da drinnen?

Morden
03.06.2013, 16:27
Ich krieg das nicht hin. Scheint so, als ob ich mich doch nur minimal mit C++ auskenne und das "bisschen" schon überschätzt war. :/
Beim Compilen krieg ich keine Fehlermeldung und im Spiel (also im Menü) wird mir das Bild nicht angezeigt :/
Würde sich einer von euch eventuell dazu bereit erklären mir so etwas schnell zu basteln oder mal über meinen Code zu schauen? :x




#define AUTO_DLLMAIN
#include <DynRPG/DynRPG.h>
int mmscn;
bool onFrame(char*pluginName)
{
if (scene == RPG::SCENE_MENU)
{
mmscn = getMenuScreen();
{
return (**reinterpret_cast<char ***>(0x4CDC60))[12];
}
if (mmscn == 0)
{
RPG::Image *myExpImage;
myExpImage = RPG::Image::create();
myExpImage->useMaskColor = true;
myExpImage->loadfromFile("Picture\EXP_Percentage.png",false);
RPG::Actor * actorCurrent;
for (int i=0; i< Global::kNumberOfHeros; i++)
{
switch(i)
{
case 0:
RPG::Canvas::Draw(200, 41, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
break;
case 1:
RPG::Canvas::Draw(200, 99, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
break;
case 2:
RPG::Canvas::Draw(200, 157, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
break;
default:
break;
}
}
}
else
{
RPG::Image::destroy(myExpImage);
}
}
return true;
}



Deine Funktion existiert gar nicht und wird deshalb nicht aufgerufen!
Das Callback heißt:


void onFrame(RPG::Scene scene)


und nicht



bool onFrame(char*pluginName)


Da dynloader.dll deine Funktion also dementsprechend nicht kennt, wird sie auch nie aufgerufen.

Edit:
Falsch ausgedrückt: Die Funktion existiert schon, du hast sie ja geschrieben. Nur versucht halt dynloader.dll eine void onFrame(RPG::Scene scene) Funktion aufzurufen, welche du ja nicht definiert und implementiert hast. Deshalb wird deine Funktion NICHT aufgerufen.

@Cherry
Oh danke, da habe ich dann wohl einfach total falsch gedacht - mein Fehler. Hatte SystemBackground jetzt mit dem MsgBox-Hintergrund gleichgesetzt. Aber danke, das wäre ich bestimmt früher oder später drüber gestolpert xD

PeAcE
MorDen

Quetschi
03.06.2013, 16:37
Ah okay. Das hab ich nun geändert, es passiert aber trotzdem nichts. Und müsste der Compiler nicht normalerweise eine .dll datei erzeugen?
Das ist bei mir nämlich auch nicht der Fall, wie ich gerade gemerkt hab. ._.

Trotzdem schonmal danke. :)

Morden
03.06.2013, 17:03
Das sollte er, wenn du das Projekt korrekt als »Dynamic Link Library« angelegt hast. Wenn du aber das Output-Directory der DLL nicht änderst, landet diese im Verzeichnis deines C/C++-Projektes, nicht aber in deinem RPG-Maker-Projekt.

Edit:
Habe mir gerade mal deinen Code ein wenig genauer angesehen und frage mich, was das soll:



mmscn = getMenuScreen();
{
return (**reinterpret_cast<char ***>(0x4CDC60))[12];
}


Du musst diese Funktion doch außerhalb erstmal als Funktion deklarieren und definieren -- dann kannst du sie aufrufen!

Des weiteren solltest du in C/C++ primitive Datentypen immer mit 0 oder ähnlichem initialisieren, da sie sonst einen zufälligen Wert am Anfang haben können, der nicht zwingend 0 sein muss.

PeAcE
MorDen

Corti
03.06.2013, 17:08
Hi, ich gehe davon aus, dass deine DLL nicht richtig kompiliert und dein Code vom Compiler nicht mal bemerkt wird, denn es ist ausgeschlossen, dass dieser Code problemlos kompiliert. Gerade als Anfänger ist es sinnlos große Konstrukte zu machen bevor nicht einzelne Stücke funktionieren.

Fang doch damit an, ohne Schleifen, Scenes etc. einfach mal irgendwas auf den Bildschirm zu zeichnen.

Bild laden
Bild zeigen
Bild löschen

in 3 verschiedenen Callbacks!


#define AUTO_DLLMAIN
#include <DynRPG/DynRPG.h>
int mmscn;
// Methodensignatur falsch
bool onFrame(char*pluginName)
{
if (scene == RPG::SCENE_MENU)
{
// du hast hier eine Funktion in deine Funktion kopiert.
// Das hier site in Funktionsaufruf
mmscn = getMenuScreen();

// das hier wird entweder ein Fehler oder die Klammern werden ignoriert und der onFrame-Callback beendet
{
return (**reinterpret_cast<char ***>(0x4CDC60))[12];
}
// du solltest die getMenuScreen-funktion als Funktion in dein Projekt einfügen und dann aufrufen.

if (mmscn == 0)
{
// das hier wird funktionieren , und ein Bild von der Festplatte laden, 60 mal pro Sekunde, absoluter Performancekiller
RPG::Image *myExpImage;
myExpImage = RPG::Image::create();
myExpImage->useMaskColor = true;
myExpImage->loadfromFile("Picture\EXP_Percentage.png",false);


RPG::Actor * actorCurrent;
// Global::etc. ist ein Namespace von mir, das solltest du schon ersetzen zB durch eine 4 ;-)
for (int i=0; i< Global::kNumberOfHeros; i++)
{
// die Schleife über das Switchkonstrukt ist grober Unfug. In meinem Samplecode folgr auf die Schleife ein Prüfen, ob ein Held auf der Gruppenposition 0 bis 3 vorhanden ist. Wenn du einfach nur an X Stellen überzeichnen willst, dann zeichne an X stellen, ohne Schleifen.
switch(i)
{
case 0:
// wenn du optionale Parameter nicht angeben willst lass sie weg, srcWidth=1 etc. gehört hier nicht hin
RPG::Canvas::Draw(200, 41, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
break;
case 1:
RPG::Canvas::Draw(200, 99, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
break;
case 2:
RPG::Canvas::Draw(200, 157, myExpImage,srcX = 0, srcY = 0, srcWidth = -1, srcHeight = -1)
break;
default:
break;
}
}
}
else
{
RPG::Image::destroy(myExpImage);
}
}
return true;
}

Morden
03.06.2013, 17:10
Perfekt Corti^^
Ich hatte leider keine Zeit um dort so genau durchzugehen^^

PeAcE
MorDen

Cherry
03.06.2013, 18:54
Außerdem ist bei Picture\EXP.... ein Backslash zu wenig und RPG::Canvas::draw ist keine statische Methode sondern über RPG::screen->canvas->draw aufzurufen.

Quetschi
03.06.2013, 19:29
So...Ich hab nun endlich die Build Messages (keine Ahnung warum die vorher nicht da waren oO) und hab den Code schonmal bearbeitet.
Das ganze meckert nurnoch an der Stelle:

RPG::Image::destroy(myExpImage);




void onFrame(RPG::Scene scene)
{
(...)
if (mmscn == 0)
{
RPG::Image *myExpImage;
myExpImage = RPG::Image::create();
myExpImage->useMaskColor = true;
myExpImage->loadFromFile("Picture\\EXP_Percentage.png",false);
for (int i=0; i< 3; i++)
{
(...)
}
}
else
{
RPG::Image::destroy(myExpImage);
}
(...)
}



Er sagt mir, dass myExpImage nicht deklariert wurde, aber eigentlich wird das doch durch "RPG::Image *myExpImage;" deklariert oder nicht? Und wenn nicht, warum meckert das ganze dann nicht bei dem draw-Befehl?

Corti
03.06.2013, 21:09
wenn(Bedingung erfüllt)
{
erstelle bild
}
wenn nicht
{
zerstöre bild
}

denk mal genau drüber nach ;-)

Quetschi
03.06.2013, 21:45
Hm...Anfangs ist die Bedingung ja nicht erfüllt...das heißt das PlugIn würde versuchen ein Bild zu zerstören, dass noch garnicht existiert...d.h. ich muss überprüfen ob das Bild bereits existiert oder? :O
Wenn ja wie mach ich das? :x
Oder iwie drumherum coden, aber da fällt mir gerade nicht ein wie ich das machen könnte...vielleicht wenn ich mal ne nacht drüber schlafe oder so. ^^

Corti
03.06.2013, 21:54
Variablen haben einen Gültigkeitsbereich. Wenn du Sachen in einem if{} erstellt sind sie nur darin gültig, genau so wäre etwas, dass du in dem else{} machst nur darin gültig.

Zu dem Bild:

Das Reinladen und das Zerstören solltest du gar nicht in dem onFrame Callback machen, weil der 60 mal pro Sekunde passiert.
Es gibt den Callback "onInit.." oder so. Der wird ausgeführt wenn die Makerspieldaten geladen wurden,also einmal beim Spielstart. Dort kannst und solltest du Bilder reinladen.
Es gibt auch den Callback "onExit" oder so, der wird ausgeführt wenn das Spiel beendet wird. Dort ist der richtige Ort um Bilder mit destroy freizugeben.


Die Variable RPG::Image *meinBild deklarierst du in der main.cpp-Datei. Dadurch ist sie in den andern Callbacks vorhanden und kann benutzt werden.

Ich hab schon öfters destroy bei Bildern gemacht, die nicht existierten weil ich einen falschen Dateinamen angegeben hab. Das heisst, du musst und brauchst nicht prüfen, ob der ->loadFromFile Vorgang erfolgreich war. Was du prüfen solltest ist, ob RPG::Image::create(); erfolgreich war und das machst du per

if(meinBild != NULL)
{
RPG::Image::destroy(meinBild );
}

Quetschi
04.06.2013, 06:08
Wieso kommt es eigentlich manchmal dazu, dass eine Meldung mit "DirectDraw Error (DDERR_NOEXCLUSIVEMODE)" angezeigt wird, wenn ich dir RPG_RT.exe starte?
Ich hab jetzt endlich sogar mal ne .dll aus dem Compiler rausbekommen und das Spiel gestartet zum Testen und da ist das mal wieder aufgeploppt.
Liegt aber glaub ich nicht an dem PlugIn, da das vorher auch schon aufgetaucht ist. Also direkt nachdem ich den DynRPG- Patch installiert habe ohne irgendwas mit PlugIns zu machen.
Erscheint aber nur, wenn ich das Spiel im Vollbild öffnen möchte. Im Fenstermodus passiert nichts. :o


Okay...hab's jetzt im Fenstermodus ausprobiert uuuuund....nichts ._. Das Fenster bleibt schwarz und ich krieg's nurnoch über den Task Manager geschlossen und für den Bruchteil von einer Sekunde,
sehe ich eine Fehlermeldung.

EDIT:

So ich hab das mal gescreent bekommen:


http://abload.de/img/pluginfehlerlse7i.png


Ja sieht wohl nach einer Zugriffsverweigerung aus :o Aber wo genau?
Ich hab das mit dem RPG::Image::create(); usw. jetzt in onInitFinished() gepackt und das RPG::Image::destroy ist im onExit Callback.
Da das ganze noch vor dem auftauchen des Title Screens passiert, gehe ich mal davon aus dass das während des onInitFinished passiert.



void onInitFinished()
{
myExpImage = RPG::Image::create();
myExpImage->useMaskColor = true;
myExpImage->loadFromFile("Picture\\EXP_Percentage.png",false);
}

Corti
04.06.2013, 07:41
zeig mal deinen onFrame-Callback-Code.

Edit @Morden: Sniped, BaM BaM ;-)

Morden
04.06.2013, 07:47
Könntest du mehr vom Source posten?

Edit: Corti war mal wieder schneller xD

PeAcE
MorDen

Quetschi
04.06.2013, 15:08
Okay.



void onFrame(RPG::Scene scene)
{
if (scene == RPG::SCENE_MENU)
{
mmscn = getMenuScreen();
if (mmscn == 0)
{
for (int i=0; i< 3; i++)
{
switch(i)
{
case 0:
RPG::screen->canvas->draw(200, 41, myExpImage);
break;
case 1:
RPG::screen->canvas->draw(200, 99, myExpImage);
break;
case 2:
RPG::screen->canvas->draw(200, 157, myExpImage);
break;
default:
break;
}
}
}
}
}



Und mir fällt gerade auf, dass ich überprüfen müsste, wieviele Helden ich in der Party hab, da ansonsten ja immer die Bilder gezeichnet werden, auch wenn an dieser Position kein Held ist
Das ergibt ja keinen Sinn, wenn dann da plötzlich einfach so ein Bild ist.
Wahrscheinlich hiermit:

static RPG::Actor* RPG::Actor::partyMember (int index) [static]
Aber wie benutze ich das? Das "(int index)" heißt doch, dass ich dem ganzen eine Integerzahl übergeben muss oder nicht? ._. Wenn ja, welche?

Morden
04.06.2013, 15:19
Jap, heißt es.
Du müsstest es dann so aufrufen:


RPG::Actor* actor;
actor = RPG::Actor::partyMember(INTEGER);


Dabei ist darauf zu achten, dass die Funktion »0«-indexiert ist, also von 0 bis 3, nicht von 1 bis 4!
Dann müsstest du damit dann halt auch prüfen können, ob der zurückgegebene Actor != NULL ist.
Korrigiert mich, wenn sich die Funktion anders verhält!

EDIT:
Dein onFrame-Code sieht für mich auf den ersten Blick richtig aus.

PeAcE
MorDen

Corti
04.06.2013, 15:27
Hrm, spontan sehe ich den Fehler nicht.

Geht er weg wenn du die draw-Zeilen rauseditierst?

@Partymember:
Hatte ich dir bereits auf der vorherigen Seite beschrieben ;-) Aber hier nochmal

// Zeiger auf ein Heldenobjekt
RPG::Actor * actorCurrent;

// Die Funktion "RPG::Actor::partyMember" gibt dir einen Zeiger auf ein Heldenobjekt auf dem übergebenen Index zurück
actorCurrent = RPG::Actor::partyMember(indexHero); // Der Index ist 0 bis einschliesslich 3, da maximal 4 Helden in der Gruppe sein können. Die Reihenfolge entspricht der im Menü.

// Nachdem du den Helden auf einem Index angefordert hast, musst du überprüfen, ob wirklich ein Held zurückgegeben wurde.
if(actorCurrent != 0) // if zero, no actor has been returned
{

}

EDIT: Ey Morden war schneller! Damit stehts nun 1:1 , haha ^_^

Quetschi
04.06.2013, 15:49
Ich hab die draw-Zeilen mal auskommentiert, leider kam immernoch derselbe Fehler.
Allerdings wurde mir die Meldung diesmal über dem Fenster angezeigt und das Spiel hat nach einem Klick auf "OK" gestartet.
Danach hab ich nochmal die draw-Zeilen hinzugefügt und auch dieses mal hat das Spiel nach einem Klick auf "OK" gestartet. Mir komm't gerade so vor, als ob es zufällig ist ob die Meldung über oder unter dem Fenster auftaucht.
Wenn sie allerdings unter dem Fenstar auftaucht, hilft nur ein Beenden über den Task Manager.
Danach bin ich im Spiel selber ins Menü gegangen und dann bekam ich erneut die Meldung mit "Access Violation in module ..." und wurde auf den Title Screen zurückverfrachtet.

Corti
04.06.2013, 16:00
a) Kommentier mal alles raus. Einfach Callbacks ohne Inhalt. Was passiert dann?
b) mach dann mal die reinladen-destroy schritte im onInit, einmal. Erstmal sehen ob das funktioniert.


Welche Version hat deine RPG_RT.exe?
Hast du irgendwelche Patches drauf?
Welche Version des C++-Compilers benutzt du?

Morden
04.06.2013, 16:04
@Quetschi

Hast du das Präprozessor-Makro »AUTO_DLLMAIN« definiert?
Also am Anfang deiner main-Datei:


#define AUTO_DLLMAIN


Weiß zwar nicht direkt, ob das was damit zu tun hat, aber vielleicht kann man so den Fehler eingrenzen.
Ansonsten wäre dein ganzes Projekt bzw. dein ganzer Source vielleicht hilfreicher, als immer nur son Schnipsel.

PeAcE
MorDen

Quetschi
04.06.2013, 16:12
Außer dass mir gerade bei 4 von 5 mal starten wieder der Fehler "DirectDraw Error (DDERR_NOEXCLUSIVEMODE)" um die Ohren gehauen wurde, was scheinbar durch bloßes patchen ausgelöst wird, kam keine "Access Violation" mehr.
(Hab es dann nochmal bei einem komplett neuem Projekt ausprobiert, weil's mir zu doof wurde ._.)
Ich benutz' die Code:: Blocks Version 12.11. Hab sonst keine Patches drauf. Die Version der RPG_RT.exe ist 1.0.8.0.

EDIT:
Wenn ich das ganze im onInit ablaufen lasse, kommt wieder Access Violation.

@Morden: Ja das #define AUTO_DLLMAIN ist drin. Und hier nocheinmal der ganze Code:



#define AUTO_DLLMAIN
#include <DynRPG/DynRPG.h>
int mmscn;
RPG::Image *myExpImage;
int getMenuScreen()
{
return (**reinterpret_cast<char ***>(0x4CDC60))[12];
}

void onInitFinished()
{
myExpImage = RPG::Image::create();
myExpImage->useMaskColor = true;
myExpImage->loadFromFile("Picture\\EXP_Percentage.png",false);
}

void onFrame(RPG::Scene scene)
{
if (scene == RPG::SCENE_MENU)
{
mmscn = getMenuScreen();
if (mmscn == 0)
{
for (int i=0; i< 3; i++)
{
switch(i)
{
case 0:
RPG::screen->canvas->draw(200, 41, myExpImage);
break;
case 1:
RPG::screen->canvas->draw(200, 99, myExpImage);
break;
case 2:
RPG::screen->canvas->draw(200, 157, myExpImage);
break;
default:
break;
}
}
}
}
}

void onExit()
{
RPG::Image::destroy(myExpImage);
}

Morden
04.06.2013, 16:17
Bei der Version 12.11 von CodeBlocks ist MinGW mit GCC Version 4.7 dabei, du solltest aber lieber GCC Version 4.6.1 verwenden!
Ich such dir gleich mal nen Link raus.

EDIT:

Hier schonmal ein Link zu einem GCC in Version 4.6.1: http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/Previous/1.1006.0/tdm-gcc-4.6.1.exe/download. Beim Installieren darauf achten den Haken bei Updates rauszunehmen sonst installiert er gleich das neuste, also 4.7.1 wenn ich mich nicht täusche.

Ich denke das müsste dann deine Probleme auch schon beheben, denn dein Code an sich scheint nicht falsch zu sein und sollte eigtl laufen - so auf den ersten Blick.

Du musst dann halt in CodeBlocks nur einen neuen Compiler einrichten und dort dann auch halt DynRPG einfügen.

PeAcE
MorDen

Quetschi
04.06.2013, 19:24
Okay...Ich hab mir jetzt einfach ne ältere Code:: Blocks version geholt und ich krieg keine Meldung mit Access Violation.
Ich muss jetzt nurnoch die Transparenz rausnehmen, weil man sonst noch die Zahlen darunter sieht ._. Aber das ist ja schnell getan.^^
Und dann noch abfragen wieviele in meiner Party sind.

Ich kriege aber immernoch ab und zu den Fehler mit "DirectDraw Error (DDERR_NOEXCLUSIVEMODE)", wenn ich es aus dem Ordner starte (also im Vollbildmodus).
Weiß jemand was es damit auf sich hat? Entweder ich erhalte den Fehler und das Spiel schließt sich, oder aber ich krieg den Fehler nicht und das Spiel minimiert sich.
Wäre gut wenn ich das auch noch irgendwie weg kriege.

Corti
04.06.2013, 21:01
Versuch mal "AnotherFullscreenMode", gibts hier irgendwo im Forum. Welches Windows hast du?

Quetschi
04.06.2013, 21:06
Okay, dann such ich mir den mal raus.

Windows 7 64-bit

Oh...und uhm Corti?





// Die Funktion "RPG::Actor::partyMember" gibt dir einen Zeiger auf ein Heldenobjekt auf dem übergebenen Index zurück
actorCurrent = RPG::Actor::partyMember(indexHero); // Der Index ist 0 bis einschliesslich 3, da maximal 4 Helden in der Gruppe sein können. Die Reihenfolge entspricht der im Menü.

// Nachdem du den Helden auf einem Index angefordert hast, musst du überprüfen, ob wirklich ein Held zurückgegeben wurde.
if(actorCurrent != 0) // if zero, no actor has been returned



Wenn der Index von 0 bis 3 geht, wieso muss ich dann prüfen ob er ungleich 0 ist? ._.

EDIT: Okay, ich glaub ich hab's verstanden. :D

EDIT2: Okay. Das PlugIn ist fertig ._. Großes Dankeschön an alle die mir geholfen haben! :D
Muss jetzt nur noch mit dem AnotherFullscreenMode gucken ob dann immer noch der Fehler mit dem DirectDraw erscheint. Aber das mach ich morgen, bin jetzt zu müde :'D

Morden
04.06.2013, 22:40
Nochmal zur Erklärung:
Du prüfst mit


if( actorCurrent != 0 )
bzw
if( actorCurrent != NULL )

ob der Zeiger »actorCurrent« - den haben wir ja durch den »*«-Operator als eine Zeigervariable definiert - gleich Null ist. Das heißt in diesem Fall, dass der Zeiger leer ist - sozusagen. Sonst würde er ja auf ein RPG::Actor-Objekt zeigen von welchem du dann halt die Eigenschaften abfragen kannst. Dafür benutzt du »->« weil dieser Operator - im Gegensatz zum ».«-Operator - gleichzeitig den Zeiger dereferenziert und Zugriff auf das Objekt gibt, auf das der Zeiger zeigt. Ich weiß aber nicht, ob ich das gut erklärt habe xD

Edit:

Wegen dem anderen Problem: Was hast du für einen Monitor?

PeAcE
MorDen

Quetschi
04.06.2013, 22:50
Ja ich hab's ja schon verstanden. :'D
Das ganze ist mir dann auch klar geworden^^

Uhm...einen von Asus 24" Full HD, weiß aber gerade das Modell nicht und im Handbuch steht auch nur VH236S/VH232S/VH202S...welcher das jetzt genau ist...keine Ahnung ._.

Cherry
05.06.2013, 02:15
Statt


switch(i)
{
case 0:
RPG::screen->canvas->draw(200, 41, myExpImage);
break;
case 1:
RPG::screen->canvas->draw(200, 99, myExpImage);
break;
case 2:
RPG::screen->canvas->draw(200, 157, myExpImage);
break;
default:
break;
}

Würde ich


RPG::screen->canvas->draw(200, 41 + i * 58, myExpImage);

schreiben.

Wesentlich kürzer, effizienter und wartbarer.

Corti
05.06.2013, 06:01
EDIT2: Okay. Das PlugIn ist fertig ._. Großes Dankeschön an alle die mir geholfen haben! :D

Nice :-)

@andere: ihr seht, man muss vor DynRPG keine Scheu haben.

Morden
05.06.2013, 06:27
@andere: ihr seht, man muss vor DynRPG keine Scheu haben.

Warum auch? Gibt ja auch zwei, drei geistreiche Gestalten, die hier gerne mal helfen^^ Von daher =D

PeAcE
MorDen

Quetschi
05.06.2013, 16:17
@Cherry:
Mittlerweile brauche ich das so, da ich 3 verschiedene Bilder habe. Das Systemset hat unten ein dunkleres blau als oben und da ich dort nicht einen hellen Block haben möchte (wo der Rest ja sonst dunkler ist) hab ich das eben über switch gelöst.
Es sei denn, du kommst mir jetzt mit einer superschlauen Lösung daher, wie ich das auch mit den 3 verschiedenen Bildern noch vereinfacht hinkriege.


Und wo wir gerade immernoch beim Thema DynRPG sind...Ist es irgendwie möglich mit DynRPG die Itempreise zu verändern, festzulegen dass man nicht mehr als 1 Item einer Art gleichzeitig kaufen kann und abzufragen ob 1 Item gekauft wurde?
Ich würde gerne Statuspushende Mittel verkaufen, diese aber nach jedem Kauf teurer machen (und den Preis mit Hilfe einer e-Funktion an 999.999 anzunähern, wofür ich ja sowieso DynRPG brauche). Und da mir normal der Standardshop reicht, würde ich ungern jetzt noch einen eigenen Shop basteln...außer das geht halt wie gesagt mit DynRPG nicht. (Dann muss ich darüber nur den Preis berechnen lassen)

EDIT: Ich hab' bereits in Cherrys Dokumentation von DynRPG geguckt ob es so etwas gibt, aber nichts gefunden....deshalb frag ich nochmal um sicher zu gehen.^^

Morden
05.06.2013, 16:39
@Cherry:
Mittlerweile brauche ich das so, da ich 3 verschiedene Bilder habe. Das Systemset hat unten ein dunkleres blau als oben und da ich dort nicht einen hellen Block haben möchte (wo der Rest ja sonst dunkler ist) hab ich das eben über switch gelöst.
Es sei denn, du kommst mir jetzt mit einer superschlauen Lösung daher, wie ich das auch mit den 3 verschiedenen Bildern noch vereinfacht hinkriege.


Wenn deine Dateien zufällig durchnummeriert sind, dann könntest du doch einfach den Zähler (also »i«) benutzen, um so den Dateinamen zusammenzubauen. Das ist eine Zeile, dann brauchst du auch kein switch-case. [EDIT: Schwachsinn, siehe Corti weiter unten.]

Zu deinem anderen Problem:
Momentan ist es nur möglich den Namen und die Beschreibung eines Items abzurufen, da die Item-Klasse noch nicht in DynRPG implementiert ist. Kurzum: Ohne rumgehacke ist das leider nicht ohne weiteres möglich.

PeAcE
MorDen

bugmenot
05.06.2013, 16:44
Mittlerweile brauche ich das so, da ich 3 verschiedene Bilder habe.

Könntest du den Grund kurz erläutern? (müssen deine Exp-Bilder den Menühintergrund drin haben oder klatschst du Window-Tiles über die Standard-Exp-Anzeige?)

Cherry
05.06.2013, 17:15
Moment mal, willst du einfach nur die EXP-Anzeige entfernen?

Das würde mit folgendem Hack (in onStartup) gehen:


*reinterpret_cast<unsigned short *>(0x49E148) = 0x71EB;

Als Patch: 2 Bytes ab Offset 0x9D548 zu EB 71 ändern.

Corti
05.06.2013, 18:07
Wenn deine Dateien zufällig durchnummeriert sind, dann könntest du doch einfach den Zähler (also »i«) benutzen, um so den Dateinamen zusammenzubauen. Das ist eine Zeile, dann brauchst du auch kein switch-case.
Der Dateiname ist an der Stelle unfug, da die Bilderdaten längst in onInit geladen wurden. Praktischer wäre es die Bildaten in ein Array zu packen und dann jeweils das Bild an Index i anzuzeigen.
Praktikablerweise würde ich so etwas nicht einmal als Schleife machen sondern copy&paste, sind eh maximal 4. Der Kompiler wird kleine Schleifen in der Optimierung sowieso "unrollen" wenn es sich anbietet.

Die beste Lösung bietet aber hier unser Cherrrrry~

Cherry, könnte man auf die Art alle bekannten "Hacks" on the fly einspielen? Krieg ich die Offsets für Dyn-reinterpret-casts durch simple Differenz der hier gegebenen Adresswerte raus?

Morden
05.06.2013, 18:17
Der Dateiname ist an der Stelle unfug, da die Bilderdaten längst in onInit geladen wurden. Praktischer wäre es die Bildaten in ein Array zu packen und dann jeweils das Bild an Index i anzuzeigen.
Praktikablerweise würde ich so etwas nicht einmal als Schleife machen sondern copy&paste, sind eh maximal 4. Der Kompiler wird kleine Schleifen in der Optimierung sowieso "unrollen" wenn es sich anbietet.

Die beste Lösung bietet aber hier unser Cherrrrry~

Cherry, könnte man auf die Art alle bekannten "Hacks" on the fly einspielen? Krieg ich die Offsets für Dyn-reinterpret-casts durch simple Differenz der hier gegebenen Adresswerte raus?

Oh, du hast vollkommen Recht. Kommt davon, wenn man mal fix antwortet. Danke für den Hinweis! Werd's gleich editieren.
Hatte schon wieder ne ganz andere Lösung im Kopf und dann falsch gedacht - passiert^^''

Und letzteres würde mich auch brennend interessieren! Ich habe nämlich alles, was Cherry bisher iwo gepostet hat an OnTheFly-Hacks und was ich gefunden habe zusammengesammelt^^

PeAcE
MorDen

bugmenot
05.06.2013, 18:50
Vergiss nicht die Exp-Anzeige im Statusmenü:
0x9E621 -> 01 set 00 (ausblenden)
bzw.
0x9E628 = x-Pos

und das Exp-Symbol
0x9E4A6 -> 01 set 00 (ausblenden)
bzw.
0x9E4AD = x-Pos

und das ----/---- beim max.Lv
0x9E5D4 -> 01 set 00 (ausblenden)
bzw.
0x9E5DB = x-Pos


Cherry, könnte man auf die Art alle bekannten "Hacks" on the fly einspielen? Krieg ich die Offsets für Dyn-reinterpret-casts durch simple Differenz der hier gegebenen Adresswerte raus?
Physischer Offset + 0x400C00 = virtueller Offset. Klingt lustig, wenn man zwischen HexHacks wechseln kann/tut.

Quetschi
05.06.2013, 19:16
Nein, ursprünglich wollte ich die EXP bis zum nächsten Level ändern, so dass ich nicht an die Kurve vom RPG Maker gebunden bin. Da das ja scheinbar nicht geht, benutze ich jetzt Variablen.
Da ich dann aber nicht die korrekten Werte im Menü hätte, wäre das nur verwirrend für den Spieler, also hab ich mir gedacht ich pack da halt ein Bild mit "100" hin und sag dem Spieler dann wieviel "Prozent" er schon hat.
Diese Angabe ist dann zwar gerundet, aber das ist nicht so schlimm denke ich, ansonsten mach ich aus der 100 einfach eine 1.000 und kann sozusagen eine Nachkommastelle anzeigen.
Dann würde 627/1.000 eben 62,7% EXP bedeuten. Mir gings halt darum, dass dem Spieler was angezeigt wird.

Das Statusmenü benutze ich nicht und ist somit kein Problem. Was meinst du mit EXP-Symbol? Mir fiel da keins auf...oder ist das nur im Statusmenü vorhanden?
Und ja beim max. LVL muss ich mal gucken wie ich das regel...entweder auch über's PlugIn (theoretisch gesehen ist das ja einfach nur anzeigen wenn mehr Bildern, wenn die Helden das max. Lvl haben) oder ich umgeh das irgendwie mit dem Maker.

bugmenot
05.06.2013, 19:55
Symbol = Was man in der Database unter Vokabeln/String, Seite 5 angibt. (Gibt nämlich Offsets für Symbol, Zahl(aktuell) und Zahl(max.))
Edit: Ja, ist nur im Status-Fenster

----/---- (bei max.Lv) im Hauptmenü entfernen:

Als Patch: 2 Bytes ab Offset 0x9D548 (7C 21) zu EB 71 ändern.
oder nur das ----/---- entfernen
0x9D748 -> 0F set 00

...oder die Exp-Anzeige im Menü verschieben und als einen zusätzlichen Wert für etwas komplett anderes/eigenes missbrauchen:
0x9D5AB (oder auch ...AE) = y-Pos.
0x9D5B0 = x-Pos

Cherry
05.06.2013, 23:11
' VA/File mapping (VA range = 400000 - 4CF000):
' 400000 - 400400 = 00000 - 00400 HEADER
' 401000 - 4C9E00 = 00400 - C9200 CODE
' 4CA000 - 4CE200 = C9200 - CD400 DATA


Also für Offsets 0 - 400 addieren wir 400000, für Offsets 400 - C9200 addieren wir 400C00, für Offsets C9200 - CD400 addieren wir 400E00.

Das ganze hat mich auf eine - hoffentlich geniale - Idee gebracht: http://www.multimediaxis.de/threads/134256-DynRPG-Das-RM2k3-Plugin-SDK?p=3084525&viewfull=1#post3084525

TwoFace
07.06.2013, 00:06
Mal ne ganz, ganz blöde Frage:

"Change entire Partys HP +1" heißt ja ich geb der ganzen Party +1 HP. Heißt das nun, wenn ich zwei Partymitglieder á 25 HP habe, dass dann beide +1 HP bekommen oder einfach einer von beiden? Mir gehts um die Zahl im Speicherslot. Die ist immer fehlerhaft, obwohl ich korrekt scripte. Daher dachte ich mir, dass ich vllt irgendwas falsch verstehe. Auf welchen "Held" geht das +1? Auf beide? Auf einen? Wenn ja: auf welchen? (ich nutze dieses HP-Zeug das erste mal, daher hab ich kein blassen Dunst. Man möge mir verzeihen.)

Cherry
07.06.2013, 00:35
Nein da kriegen dann beide je 1 HP.

Fehlerhaft Skripten: Kann es sein dass du vergisst dass man nicht alle HP abziehen kann ohne zu aktiveren dass der Held sterben kann - sonst bleibt immer 1 HP übrig - und man umgekehrt einem 0-HP-Helden keine HP geben kann ohne vorher manuell den Status "Tot" zu entfernen, was ihm wiederum automatisch 1 HP gibt?

elvissteinjr
15.06.2013, 11:42
Ähm, gibt es eigentlich eine performante Möglichkeit zu prüfen ob irgendeines von 31 Events auf einen von 11 Bodenschaltern steht? Dank RMEF konnte ich zwar recht fix den Code für die Abfragen generieren, allerdings ist das dann ne ziemliche Ruckellei(oh, wunder) und ich hab ja nicht mal den schwächsten PC, kann ich also so nicht hinnehmen. Bin an RM2k gebunden, DynRPG ist also keine Option.
Der PP hat nen Wait von 0.1 Sek, mehr wäre nicht ganz so gut, denn die besagten Events sind ständig in Bewegung(und auch nicht auf festen Bahnen oder sonstwas).

Gibt's da irgendeinen möglichen Trick oder sonst was?

MagicMaker
15.06.2013, 12:25
Wenn's ruckelt, hast du Mist gebaut, aber für diese Abfrage brauchst du bestimmt keinen hochkomplexen Code aus der Factory.

Benutz [Get Event ID] auf den 11 Schalterpositionen und schau jeweils, ob sie einem der 31 Dinger entspricht, das sollte Makerchen
schnell genug abarbeiten können. Vorzugsweise aber ohne Loop, sondern alle 11 hintereinanderweg, der Wiederholperformance wegen.
Am Ende einen Wait 0 benutzen, reicht aus.

Du könntest auch 11 Prüfevents auf die Schalter stellen, die alle niedrigere IDs als die anderen haben und schauen, ob die Event-ID
auf ihrer Position nicht mehr ihrer eigenen entspricht, irgendwie könnte das auch gehen.

elvissteinjr
15.06.2013, 12:32
Du könntest auch 11 Prüfevents auf die Schalter stellen, die alle niedrigere IDs als die anderen haben und schauen, ob die Event-ID
auf ihrer Position nicht mehr ihrer eigenen entspricht, irgendwie könnte das auch gehen.

Letzteres klappt ganz gut, ist mir dann sogar auch selbst eingefallen. Wenn mal was auf dem direkten Weg nicht ganz so klappt, stellt sich wohl erst die Denkblockade ein.^^'
Danke.

Morden
15.06.2013, 15:46
Bin an RM2k gebunden, DynRPG ist also keine Option.

Wenn du an den Rm2k gebunden bist, kann ich dir für komplexere Sachen den DestinyPatch (http://www.bananen-joe.de/DestinyDLL/) empfehlen! Der stellt eine Skriptsprache bereit, welche du in den Kommentaren notierst, und die dir auf fast alles Zugriff gewährt. Damit kannst du dann auch komplexere Skripte "leichter" umsetzen. Zählschleifen und erweiterte logische Ausdrücke sind schon was feines^^


Wenn's ruckelt, hast du Mist gebaut, aber für diese Abfrage brauchst du bestimmt keinen hochkomplexen Code aus der Factory.



Am Ende einen Wait 0 benutzen, reicht aus.

Ich könnte mir vorstellen, dass evtl. der Else-Handler - wenn er denn verwendet wurde - daran Schuld sein könnte. Also an dem Ruckeln. Ich habe auch schon desöfteren festgestellt, dass man die Engine ziemlich leicht zum ruckeln bringen kann, wenn man viele Else-Handler verwendet und die Reihenfolge der Abfragen nicht der "erwarteten" Häufigkeit entspricht. Dort ist es dann oftmals schneller keine Else-Handler zu benutzen, und das ohne sie zu lösen.

Und eigentlich bräuchte man bei einem PP kein Wait 0 am Ende, weil ein PP automatisch ein Wait 0 am Ende des Event-Skriptes setzt ;) Setzt man gar kein Wait in einem PP, so wird es - im günstigsten Fall - 60 mal in der Sekunde ausgeführt (60 fps). Es wartet also von vornherein schon einen Frame - also Wait 0 - bis es das nächste Mal durchläuft. Mit einem Wait 0 würde es also 30 mal durchlaufen pro Sekunde.

PeAcE
MorDen

Nemica
15.06.2013, 16:08
Also 30 mal in der Sekunde ist eh mehr als genug. Und gegen sich stapelnde Else-Handler kann man die Abfragen in Gruppen aufteilen und den nicht benutzten Code überspringen.

Morden
16.06.2013, 09:44
Also 30 mal in der Sekunde ist eh mehr als genug. Und gegen sich stapelnde Else-Handler kann man die Abfragen in Gruppen aufteilen und den nicht benutzten Code überspringen.

Ob 30 mal die Sekunde genug ist, kommt wieder darauf an, was gemacht werden soll - wobei ich dir natürlich grundsätzlich Recht gebe. Normalerweise sollte das reichen. Nur ist es einfach gut zu wissen, wie der Maker seine Events abarbeitet - ist zumindest meine Meinung. Denn ein AutoStart-Event z.B. wartet nicht bis zum nächsten Frame, weswegen man damit auch ziemlich einfach die gesamte Engine lahmlegen kann.

Man kann manchmal auch komplett auf den Else-Handler verzichten. Aber es ist stimmt schon was du sagst, ist alles ne Frage der Code-Strukturierung. Ich arbeite ja auch nicht erst drei Tage mit den Makern^^ Und der Else-Handler ist imo schlecht implementiert xD

PeAcE
MorDen

Nemica
16.06.2013, 13:04
Das mit dem Elsestapeln ging auch eher an Elvis Stein den Jüngeren.

elvissteinjr
16.06.2013, 14:11
Also bei mir läuft ja jetzt alles. Destiny wollt ich jetzt nicht auch noch reinhauen und schon gar nicht kurzfristig lernen damit umzugehen(ist Contestprojekt, Abgabe: heute*hust*). Achja, ich hoffe übrigends dass du nicht extra für Zählschleifen den Destiny brauchst, würde mir sorgen machen.^^'
Und selbst wenn ein PP den Frame abwartet, ohne Wait wird das auf Singlecores oft unverhältnismäßig lahm.

Die Frage ist ja, wie man die klassische direkte Positionsabfrage denn für die Menge sinnvoll aufteilen könnte. Wenn ich das ganze jetzt mit Flächen gebraucht hätte, wär's erst recht was geworden.

Aber naja, bei läuft ja jetzt alles soweit. Hoffe nur dass wirklich schwache Rechner da nicht irgendwie trotzdem überfordert werden(die Schalter sind ja nicht die einzigen Sachen die als PP laufen), hab sowas aber leider nicht mehr im Haus.

Cherry
16.06.2013, 18:45
Ob Singlecore oder Hexadecacore macht beim Maker keinen Unterschied, alles wird da auf einem Prozessorkern ausgeführt.

elvissteinjr
16.06.2013, 19:07
Bloß kann das Ding dann ja nicht das ganze System mit runter reißen, das war eigentlich mein Punkt, sorry.

Morden
17.06.2013, 08:00
Also bei mir läuft ja jetzt alles. Destiny wollt ich jetzt nicht auch noch reinhauen und schon gar nicht kurzfristig lernen damit umzugehen(ist Contestprojekt, Abgabe: heute*hust*). Achja, ich hoffe übrigends dass du nicht extra für Zählschleifen den Destiny brauchst, würde mir sorgen machen.^^'
Und selbst wenn ein PP den Frame abwartet, ohne Wait wird das auf Singlecores oft unverhältnismäßig lahm.

Die Frage ist ja, wie man die klassische direkte Positionsabfrage denn für die Menge sinnvoll aufteilen könnte. Wenn ich das ganze jetzt mit Flächen gebraucht hätte, wär's erst recht was geworden.

Aber naja, bei läuft ja jetzt alles soweit. Hoffe nur dass wirklich schwache Rechner da nicht irgendwie trotzdem überfordert werden(die Schalter sind ja nicht die einzigen Sachen die als PP laufen), hab sowas aber leider nicht mehr im Haus.

Nein, natürlich kann man kopf- und fußgesteuerte Schleifen im Maker nachbauen - keine Frage. Damit dann halt auch Zählschleifen. Aber dennoch ist es wesentlich komfortabler, wenn man sie direkt benutzen kann - darauf wollte ich eigentlich hinaus. Rein »theoretisch« kann man wirklich vieles mit dem Maker nachbilden - mehr oder weniger aufwändig, und mehr oder weniger performant. Und gerade Koordinaten getten scheint für die Maker-Engine echt schwerstarbeit zu sein. Hatte das mal getestet indem ich die Zeit gemessen habe, wie lange es dauert 500.000 mal die Koordinaten eines Events zu getten. Dabei hatte ich einmal komplett die Maker-Engine verpflichtet, einmal DynRPG für das getten der Koordinaten (dabei die Schleife per Maker Engine) und einmal die komplette Schleife in DynRPG/C++. Zeit war Maker > Maker/DynRPG > DynRPG/C++ (Wobei DynRPG/C++ extrem schnell war ( <1s ) )
Wobei ich glaube, dass das jetzt nicht sonderlich neu und interessant war xDD

Und normalerweise sollte es - wie Cherry schon sagte - egal sein, ob Dual- oder Singlecore, solange die Pro-Kern-Leistung hoch genug ist. Wobei ich dir Recht gebe, dass beim DualCore der Vorteil ist, dass Windows-Hintergrunddienste auf den zweiten Kern verteilt werden können.

Was vor allem beim Maker noch zu beachten ist, ist dass JEDE Variablen-Operation die gleiche Zeit zu kosten scheint. Egal ob "+", "-" usw. Das interessante: Die Variablen-Range-Funktion braucht anscheinend auch genauso lange, wie eine normale Variablen-Operation an einer einzigen Variable o.O

Und bzgl. sinnvoller Aufteilung kommt das wohl auch ganz auf die Aufgabe des Skriptes an.


Ob Singlecore oder Hexadecacore macht beim Maker keinen Unterschied, alles wird da auf einem Prozessorkern ausgeführt.

Hexadecacore = 16 Kerne? ^^

PeAcE
MorDen

elvissteinjr
17.06.2013, 08:08
Was vor allem beim Maker noch zu beachten ist, ist dass JEDE Variablen-Operation die gleiche Zeit kostet. Egal ob "+", "-" usw. Das interessante: Die Variablen-Range-Funktion braucht auch genauso lange, wie eine normale Variablen-Operation an einer einzigen Variable o.O

Das ist gar nicht so verwunderlich. Die meiste Zeit wird der Maker wohl für die interpretierung der Skriptzeile beanspruchen, danach für den Zugriff auf das VariablenArray. Die eigentlichen Rechenoperatiionen benötigen da nur minimalste CPU Zeit.

Mike
02.07.2013, 21:41
Gibt's die Möglichkeit den Maker in der "Mindestens 1 Lebenspunkt bleibt übrig"-Sache dahingehend auszutricksen, dass ich - wie bei einem Kampf - anstatt auf den GameOver-Screen zu kommen, eine Art "Custom Handler" einbaue?

LG Mike

TwoFace
02.07.2013, 22:12
Klar. Wähl Conditional Branch auf und geh auf Seite 2 zu "Hero HP is at least" und definiere die HP als 1.

Mike
02.07.2013, 22:53
Ich meinte damit, dass ich bei der Funktion "Change HP's" den Haken bei "hp reduction can kill target" setzen kann, ohne dann zum GameOver-Screen zu kommen. Es soll dann ein selbsterstellter GameOver-Screen aufgerufen werden, der zB animiert oder dgl. ist :)

LG Mike

Corti
03.07.2013, 08:51
K.a. wozu du das brauchst, Action-KS oder irgendwelche Dungeonfallen oder so, da du es wahrscheinlich selbst codest, mach ne Abfrage ob es killen wird, dann haste deine Information.

if(Schadenspunkte > verbleibende HP)
{
// Held würde sterben...
}

Mike
03.07.2013, 09:11
So hab ich's momentan gelöst :) Kam mir aber unlogisch vor, dass es da keine Funktion gibt, weil's beim Kampf auch eine gibt. Danke trotzdem!

Und ja: Für Dungeonfallen. Genau ins Schwarze getroffen ^^

LG Mike

Cynder
09.07.2013, 22:56
Hey hier ist mal n merkwürdiges problem : ohne grund spinnen auf einmal
die bewegungen rum - der chara läuft automatisch nach oben und man kann nicht nach unten
meine tatatur ist aber in ordnung habs schon mit ner andern ausrpobiert - und andere programme und tools sind auch in ordnung

ich habe den maker auch schon re-instaliert
das problem taucht bei ALLEN makern auf sowohl asl beim 2003 als auch beim XP
was da los ?

Cherry
09.07.2013, 23:12
Starte dieses Programm, das korrigiert den Fehler: http://share.cherrytree.at/showfile-2704/kbdreset.exe

Cynder
09.07.2013, 23:18
leider nicht :(

Cherry
09.07.2013, 23:59
Dann gibts normalerweise eigentlich nur noch die Möglichkeit dass du ein Gamepad angeschlossen hast und das nicht ordentlich kalibriert ist...

Bzw. hast du schon einen simplen Computerneustart versucht?

Riven
26.07.2013, 18:38
Ich hab mal ne Frage zu dem UnlockPic Patch der bei mir irgendwie nicht zu funktionieren scheint ... ich habe die RPG_RT.exe gepatcht doch wenn ich das Spiel starte frieren trotzdem alle beweglichen Hintergrundbilder ein sobald die Textboxmessage startet -.- muss man noch irgendwie etwas einstellen oder so? Im Prinzip ist es ja ne simple Sache und ich wüsste nicht was ich falsch gemacht hätte bzw nicht gemacht habe... ich benutze den 2k

Nemica
26.07.2013, 18:46
Eigentlich ist da nix mehr einzustellen. oô

Schnapp dir ne neue exe und versuchs nochmal.

Riven
26.07.2013, 18:54
Eigentlich ist da nix mehr einzustellen. oô

Schnapp dir ne neue exe und versuchs nochmal.

Hab ich schon probiert... ändert sich nichts ...

Nemica
26.07.2013, 19:17
Da hast du (http://share.cherrytree.at/showfile-10733/rpg_rt.exe). Lad trotzdem mal die exe hoch, die du patchen wolltest.

MagicMaker
27.07.2013, 02:04
Musste man den Patcher für UP nicht aus irgendeinem Grund zweimal anwenden?

Riven
27.07.2013, 08:20
Musste man den Patcher für UP nicht aus irgendeinem Grund zweimal anwenden?

Jop das hat auch geholfen warum auch immer bin nur froh das es jetzt funzt ... danke euch für die Hilfe

Nemica
27.07.2013, 09:23
Musste man den Patcher für UP nicht aus irgendeinem Grund zweimal anwenden?
Das hängt dann aber von der Version ab. Weil bei mir hats beim ersten Mal funktioniert.

ShizNat
05.09.2013, 13:05
Hab auch mal ne Frage zum RM2K3. Und zwar nutze ich den AutoEnterPatch und lande dann direkt in einem von mir erstellten Auswahlmenü. Dort gibt es natürlich auch die Option "Spiel beenden". Problem ist das der RPG-Maker 2000/2003 im gegensatz zum RMXP/VX den Befehl "Go to Windows" nicht kennt und dementsprechend das Spiel ohne das richtige Titelmenü nicht beenden kann. Gibt es nun eine andere möglichkeit dies zu bewerkstelligen, möglichst ohne den Power Patch? Weil der funktioniert in meinem Projekt nicht richtig.

Meine da gab es ne möglichkeit mit "End Event Processing" aber keine ahnung ob das stimmt.

Corti
05.09.2013, 14:15
Erstmal:
Es gibt den AutoEnter-Patch und den BetterAutoEnterPatch. Wenn du nicht den BetterAEP hast, hol dir den. Wenn du den hast, schau mal in die Readme, dort findest du raus, wie man den Ladeboildschirm öffnet und das Spiel beendet

Mfg

Innocentia
07.09.2013, 15:00
Ich wollte für mein Anliegen keinen neuen Thread aufmachen :X

Ich stehe momentan vor einem besch-... Problem mit dem rm2k3:
Für einen einzigen Kampf benötige ich umgefärbte Battle Animationen, da nachtgedämmter Screen mit normalfarbenen BAs blöd aussieht. Ich dachte, ich könnte dieses Problem umgehen, indem ich einfach einen Klassenwechsel mit umgefärbten BAs verwende.
An sich funktioniert es, aber ich hab dabei folgende Probleme festgestellt:

- Sämtliche Waffen werden abgelegt (was ich ja noch mittels Ausrüsten manuell nachstellen kann, da erster Kampf und so, aber für später, wenn man individuelle Waffen hat, ein Unding!)
- die EXP gehen an die neue Klasse, nicht an den Charakter an sich

Gibt es andere Methoden, wie ich dieses Problem mit den BAs lösen könnte?
Ich wäre über Hilfen und Ratschlägen sehr dankbar! :(

- Das Inno -

Corti
07.09.2013, 18:11
Hrm... Ich bin ja sehr skeptisch was sowas angeht. Die 2k3 Neuerungen sind von Enterbrain absonderlicherweise oft etwas schlampig implementiert. Das Risiko an Fehlern und Nebenwirkungen des Klassenwechsels würde ich für sowas nicht in kauf nehmen.

Magst du mal ein Bild von dem Nachtdämmern Posten? Vielleicht kann man den grafischen Effekt anderswie einstellen, zb mit dem DynRPG Blendingplugin

Innocentia
07.09.2013, 18:26
Aber gerne doch:
http://i.minus.com/ibxOPxbAq30Y8r.PNG
(Falls der Rand drum herum stört, kann ich auch einen neuen posten)

Wie man sieht, ist der Unterschied zwischen Hintergrund und BAs doch schon hoch, sodass ich sie anpassen wollte. Die BAs sind auch animiert, der Screentone ist R 30 G 30 B 80 Sat 100, falls du es wissen musst.

- Das Inno -

Corti
07.09.2013, 19:35
Muss das sofort gelöst werden oder hat das etwas Zeit? Ich geh davon aus , dass ich so einen Effekt hinbekommen würde oder zumindest etwas recht ähnliches.

PS: Putzige Helden hast du da ^.^

Innocentia
07.09.2013, 19:41
Muss das sofort gelöst werden oder hat das etwas Zeit? Ich geh davon aus , dass ich so einen Effekt hinbekommen würde oder zumindest etwas recht ähnliches.

PS: Putzige Helden hast du da ^.^
Das hat ruhig etwas Zeit, die Demo wollte ich erst nach meinem Umzug herausbringen, was wieder dauern kann bei meinem Glück :p Danke, dass du mir helfen magst :)

Zum PS: Danke X3

- Das Inno -

djeyes69
10.09.2013, 21:09
Gibt es eine Möglichkeit, dass wenn man eine bestimmte Menge von z.B. einem Heilitem konsumiert hat, dass die insgesamte HP steigt?
zweiteres lässt sich mit einer Conditonal Branch lösen. Ersteres mit Variablen, allerding weiß ich nich genau, ob es eine Funktion gibt, der einer Variable bei benutzen eines Items +1 dazugibt.

Corti
11.09.2013, 08:41
Hast du nur einen Helden, oder muss das für die ganze Gruppe funktionieren?

djeyes69
11.09.2013, 12:28
Ich habe nur einen einzigen Helden.

Corti
11.09.2013, 12:41
Dann kanst du ja in einem ParallelProcess über Variable = Item.NumberHeld immer abfragen wie viele Items des Types gerade vorhanden sind. Wenn sie zufällig weniger werden besteht eine hohe Chance, dass man sie benutzt hat und da man nur einen Helden hat erübrigt sich die Frage auf wen. Nur vor Shop-Aufrufen wo man verkaufen kann solltest du dann das System abstellen.

djeyes69
11.09.2013, 14:08
So, ich hatte gerade eben einen Gedankenblitz.
Ich habe das ganze jetzt so gelöst, lediglich sollte ich das Menü noch ein wenig schöner aufploppen lassen:
http://www.youtube.com/watch?v=ZCQig3eRfmE

Corti
11.09.2013, 15:01
Menü deaktivieren
eigenen Menüaufruf schreiben (PP der auf Esc prüft )
CallMenu, in der Folgezeile HideScreen, dadurch wird der einblendeffekt abgebrochen und das Bild bleibt schwarz
ann bei gesetztem Switch ein Sprung vor den Callmenu Aufruf und du bist wider im Hauptmenü ohne die Map zu sehen.

BDraw
12.09.2013, 02:02
Seit eben bekomme ich beim Starten meines Spiels im Testplay nach Wählen von "Neues Spiel" die Fehlermeldung "Subscript out of range (6)" und lande wieder beim Titlescreen. Jemand eine Ahnung, was das heißen soll? Wenn ich das Spiel normal per RPG_RT.exe im Fullscreen starte hängt es sich auf, geht in den Fenstermodus und muss per Taskmanager beendet werden.

Ich vermute, dass es irgendwie mit DynRPG oder dem Ultimate zu tun hat, aber wer weiß wie... Die Vermutung stammt daher, dass es eben noch einwandfrei ging. Ich hab ein Script im Testplay getestet, alles klappte, ich schloss das Spiel, den 2k3 und den Ultimate. Dann wollte ich was nachsehen, öffnete den Ultimate und mit dem das Spiel und -zack-.
Beim näheren Testen habe ich jetzt festgestellt, dass der Fehler nur auftritt, wenn ein Parallel-Process- oder Autostart-Event auf der Map ist. Bei letzterem tritt der fehler etwas verzögert auf, sprich, ich sehe immerhin noch kurz die Map. Dabei können die Events völlig leer sein, die 6 in der Fehlermeldung variiert auch gerne mal...

Ich werde nicht ganz schlau draus, da die Events aber selbst leer den Fehler provozieren dürfte es ja nicht am Maker-Script liegen, oder?

EDIT:
Habe die RPG_RT.exe, RPG_RT.exe.bak, RPG_RT.ini, dynloader.dll und DynRPG.ini gegen die aus dem DynRPG-Testprojekte für Kazesuis Text-Plugin ausgetauscht und es läuft wieder. Sehr interessant. oô

Trine0104
25.12.2013, 14:33
Hi,
weiß nicht, ob ich in diesem Unterforum richtig bin, versuchs aber einfach mal. Ich war die letzten zwei Jahre RPG-abstinent und wollte nun mal wieder spielen. Allerdings hab ich das RTP nicht, krieg dann immer nur diese übliche Meldung:
The RPG-Maker 2003 Run Time Package is not present or not registered
Google mich schon dumm und dämlich, aber kein Link geht mehr... Kann mir wer helfen?

Sephigruen
25.12.2013, 17:47
RPG-Studio (http://www.rpg-studio.de/engine/rpg-maker-2003-4747.html) kann helfen. War btw direkt der erste Treffer bei meiner Google-Suche.

Trine0104
25.12.2013, 18:31
Ja, das hab ich auch probiert. Die Datei kann aber nicht zu Ende installiert werden, da die Aufforderung kommt, dass man Disk 2 einlegen soll. Und die hab ich nicht^^

Corti
25.12.2013, 18:33
RTPvom 2k3 http://rpg2000.4players.de/index.php?inhalt=rpgmaker2k3

Trine0104
25.12.2013, 19:19
Jup, auch schon probiert: 404 Not found
'/pub/4players/hosted/rpg2000/rpgmaker/CommonRTP.exe' not found (No such file or directory).
:(

Corti
25.12.2013, 19:42
http://share.cherrytree.at/showfile-12432/commonrtp.rar

Muss man's eben doch selbst machen~

Trine0104
25.12.2013, 19:49
Danke!!! :herz:

Thuin8
23.01.2014, 20:11
Für mein marginales Problem lohnt sich vermutlich kein neuer Thread, deswegen hier: In einem mittlerweile 6-7 Jahre alten Thread habe ich gelesen, dass man, um für den Titlescreen ein transparentes Systemset zu emulieren die entsprechende Stelle als Hintergrundgrafik im Systemset einstellen muss. Gibt es da mittlerweile eine schönere Lösung, z.B. mit einem QuickPatch-Eintrag in der DynRPG.ini?

Gamefreak 88
01.03.2014, 19:56
Da ich zu Testzwecken ein kleines projekt starten wollte weiger der Maker sich ein neues Projekt anzufertigen,
weiss jemand rat?

----> Project Making Failure

Es grußt euer
Gamefreak 88

Corti
01.03.2014, 20:56
Adminrechte für den Zielordner vorhanden?

Ben
06.03.2014, 18:02
Ich habe mein altes Projekt Schuld und Sühne mal wieder geöffnet. Aber wenn ich ein Autostartevent mit Textboxen ablaufen lasse, erscheint kein Text (er wird nicht dargestellt). Woran kann das liegen?
Hinweis: Mir hat es die gesamte Database zer***** und ich muss alle Grafiken neu zuweisen- könnte es damit zusammenhängen?

Davy Jones
07.03.2014, 08:50
Hast du RMG2000 und RM2000 in der Systemsteuerung Ordner Fonts/Schriftarten installiert? Hast du das RTP auf der Platte?

Wie sieht es mit der alten Version des Spiels aus? Wäre es sinnvoller, die Database aus dieser Version zu verwenden oder wäre der Datenverlust zu hoch?

AgentBlack
07.03.2014, 20:57
Mit diesem Problem war ich auch bereits konfrontiert. Mir hat es geholfen die Makertypischen Schriftarten alle zu deinstallieren und dann erneut zu installieren.

wusch
18.03.2014, 09:42
Auf meinem Windows 8 Laptop läuft das KS des RM2K und des 2K3 langsamer ab als normal. Außerhalb des KS jedoch scheint alles normal zu laufen. Gibt es da eine Möglichkeit das zu beheben?

Wuppertaler93
28.03.2014, 09:42
Morgen zusammen ^^

hier mein Kleines aber Feines Problem :O

RPG2000
ich möchte eine Art Sonderbonbon aus Pokemon machen und habe es vorerst so gemacht

Item:
Spezial Trank (Klassifikation TAB (TAB AN 23: Spezitrank))
Allgemeine Ereignisse:
0001: Spezitrank (Startvoraussetzung: Automatisch Starten (Auslösender TAB: 23: Spezitrank))
Script (Ereigniskommandos)
Spiel Sound: LevelUp
Level Ändern Alle Mitglieder +1
TAB AUS 23


Das Problem daran, ich möchte das der Spieler sich das ziel aussuchen kann und nicht alle das LevelUp bekommen

Schonmal danke für die Hilfe

MfG: Wuppi

Innocentia
28.03.2014, 15:10
Das Problem daran, ich möchte das der Spieler sich das ziel aussuchen kann und nicht alle das LevelUp bekommen
Du hast ja auch eingegeben, dass alle Helden ein Level Up bekommen sollen ;)

Hier ist mein Lösungsvorschlag:
http://i.minus.com/ipw2T1AVuG75M.png

Du kannst auch bei dem Befehl Level Up die Option "Show Level up Message" aktivieren, man muss das nicht manuell machen, so wie ich es machte.

- Das Inno -

Quetschi
28.03.2014, 15:44
Wenn du nur 4 Charaktere benutzt, ist die Lösung von Innocentia optimal.
Wenn du allerdings mehr als 4 benutzen möchtest, hast du damit ein Problem. Denn theoretisch kann zu jeder Zeit eine andere Partyzusammenstellung bestehen.
Dann bräuchtest du etwas wie das hier:



- SCRIPT -
<> Change Variable: [5] = Party size
<> Change Variable: [4] = 1
<> Change Variable: [6] = 7
<> Loop
. <> Fork Condition: If Hero #1 is in party then ...
. . <> Fork Condition: If Switch [7] == OFF then ...
. . . <> Change Variable: [V[6]] = 1
. . . <> Change Switch: [7] = ON
. . . <> Change Variable: [4] += 1
. . . <> Change Variable: [6] += 1
. . . <>
. . : End of fork
. . <>
. : End of fork
. <> Fork Condition: If Hero #2 is in party then ...
. . <> Fork Condition: If Switch [8] == OFF then ...
. . . <> Change Variable: [V[6]] = 2
. . . <> Change Switch: [8] = ON
. . . <> Change Variable: [4] += 1
. . . <> Change Variable: [6] += 1
. . . <>
. . : End of fork
. . <>
. : End of fork
. <> Fork Condition: If Hero #3 is in party then ...
. . <> Fork Condition: If Switch [9] == OFF then ...
. . . <> Change Variable: [V[6]] = 3
. . . <> Change Switch: [9] = ON
. . . <> Change Variable: [4] += 1
. . . <> Change Variable: [6] += 1
. . . <>
. . : End of fork
. . <>
. : End of fork
. <> Fork Condition: If Hero #4 is in party then ...
. . <> Fork Condition: If Switch [10] == OFF then ...
. . . <> Change Variable: [V[6]] = 4
. . . <> Change Switch: [10] = ON
. . . <> Change Variable: [4] += 1
. . . <> Change Variable: [6] += 1
. . . <>
. . : End of fork
. . <>
. : End of fork
. <> Fork Condition: If Hero #5 is in party then ...
. . <> Fork Condition: If Switch [11] == OFF then ...
. . . <> Change Variable: [V[6]] = 5
. . . <> Change Switch: [11] = ON
. . . <> Change Variable: [4] += 1
. . . <> Change Variable: [6] += 1
. . . <>
. . : End of fork
. . <>
. : End of fork
. <> Fork Condition: If Variable [4] > V[5] then ...
. . <> Break Loop
. . <>
. : End of fork
. <>
: End of loop
<> Fork Condition: If Variable [5] == 1 then ...
. <> Show Choices: \n[\v[7]] (Ignore cancel)
. : [\n[\v[7]]] Handler (Option #1)
. . <> Change Level: Increase level of hero #7 by 1, Show level-up
. . <>
. : End of choice
. <>
: Else ...
. <> Fork Condition: If Variable [5] == 2 then ...
. . <> Show Choices: \n[\v[7]]/\n[\v[8]] (Ignore cancel)
. . : [\n[\v[7]]] Handler (Option #1)
. . . <> Change Level: Increase level of hero #7 by 1, Show level-up
. . . <>
. . : [\n[\v[8]]] Handler (Option #2)
. . . <> Change Level: Increase level of hero #8 by 1, Show level-up
. . . <>
. . : End of choice
. . <>
. : Else ...
. . <> Fork Condition: If Variable [5] == 3 then ...
. . . <> Show Choices: \n[\v[7]]/\n[\v[8]]/\n[\v[9]] (Ignore cancel)
. . . : [\n[\v[7]]] Handler (Option #1)
. . . . <> Change Level: Increase level of hero #7 by 1, Show level-up
. . . . <>
. . . : [\n[\v[8]]] Handler (Option #2)
. . . . <> Change Level: Increase level of hero #8 by 1, Show level-up
. . . . <>
. . . : [\n[\v[9]]] Handler (Option #3)
. . . . <> Change Level: Increase level of hero #9 by 1, Show level-up
. . . . <>
. . . : End of choice
. . . <>
. . : Else ...
. . . <> Fork Condition: If Variable [5] == 4 then ...
. . . . <> Show Choices: \n[\v[7]]/\n[\v[8]]/\n[\v[9]]/\n[\v[10]] (Ignore cancel)
. . . . : [\n[\v[7]]] Handler (Option #1)
. . . . . <> Change Level: Increase level of hero #7 by 1, Show level-up
. . . . . <>
. . . . : [\n[\v[8]]] Handler (Option #2)
. . . . . <> Change Level: Increase level of hero #8 by 1, Show level-up
. . . . . <>
. . . . : [\n[\v[9]]] Handler (Option #3)
. . . . . <> Change Level: Increase level of hero #9 by 1, Show level-up
. . . . . <>
. . . . : [\n[\v[10]]] Handler (Option #4)
. . . . . <> Change Level: Increase level of hero #10 by 1, Show level-up
. . . . . <>
. . . . : End of choice
. . . . <>
. . . : End of fork
. . . <>
. . : End of fork
. . <>
. : End of fork
. <>
: End of fork


Das ganze ist jetzt wahrscheinlich umständlicher geworden als es gehen könnte, aber soll dir auch nur zeigen was du dann halt noch erledigen müsstest.
Nämlich abfragen wer sich gerade in der Party befindet. Die IDs der Helden in 4 verschiedenen Variablen speichern. Und danach erst fragen, wer denn das Sonderbonbon erhalten soll.

EDIT: Am Ende müsste man dann halt noch die ganzen Switchs auf OFF stellen.
Alternativ kannst du die Abfrage "Is x in party?" auch streichen und nur die Switchs abfragen, wenn du diese jedes mal umstellst, wenn jemand der Gruppe beitritt bzw. sie verlässt.

Innocentia
06.04.2014, 21:56
Ich hab gerade von einem User das Problem erläutert bekommen, dass bei ihm während eines Kampfes das Spiel (rm2k) sofort abbricht, ohne Fehlermeldungen oder dergleichen. Woran könnte das liegen?
Hier die Postings dazu: http://www.multimediaxis.de/threads/138910-RM2K-VV-Im-Reich-des-Himmelsdrachen?p=3163856&viewfull=1#post3163856

- Das Inno -

Cherry
13.04.2014, 23:04
Sehr komisch, da müsst ich das live debuggen, also der Spieler müsste mir soweit vertrauen dass ich per TeamViewer auf seinen Rechner kann und das Problem debuggen wenn es auftritt.

Innocentia
14.04.2014, 06:17
Sehr komisch, da müsst ich das live debuggen, also der Spieler müsste mir soweit vertrauen dass ich per TeamViewer auf seinen Rechner kann und das Problem debuggen wenn es auftritt.
Ich werde es dem User per PN mitteilen, dass er sich bei dir diesbezüglich melden soll, wenn er das möchte. Danke für die Rückmeldung! :)

- Das Inno -

Chamberlain
14.04.2014, 08:41
ich hätte auch ein problem. Weiß nich genau ob das hier hingehört, aber ich wüßte gern mal, ob man die ATB Werte, also die Wartezeiten beim rpgmaker2003 (im kampf) ausschalten oder wenigstens richtig schnell machen kann. die warterei nervt nämlich einfach nur.
Weiß jemand antwort? Ich brauch das unbedingt für mein Projekt.

Raildex
14.04.2014, 08:54
guck mal hier (http://www.multimediaxis.de/threads/138938-DynRPG-Corti-s-Werkstatt-(Update-14-02-14)-Update-AtbSpeed-neue-Version-0-6) unter CortiATBSpeed.

Chamberlain
14.04.2014, 23:37
Cool, danke.
geht das aber vielleicht auch so, ohne zu patchen?

Quetschi
22.04.2014, 21:43
Ich habe letztens irgendwo gelesen, dass Loops im Gegensatz zu Label-Schleifen fehleranfällig sind.Kann jemand etwas genaueres dazu sagen?
Der einzige Unterschied der mir aufgefallen ist, ist dass Loops langsamer sind.
Ich würde gerne wegen der deutlich besseren Übersicht die Loops benutzen, da mir gerade bei aufwändigeren Sachen Übersicht wichtig ist.
Sollte es nämlich nur die Sache mit den Wiederholungen sein, kann ich darauf verzichten und habe dafür lieber mehr Übersicht.

Corti
23.04.2014, 08:13
Afair/afaik:
Der Breakloop-Befehl springt zum nächsten Loop-Ende. Das muss nicht das Loop-Ende sein, dass du damit zu erreichen meinst. Dadurch könntest du Code erhalten, der sich völlig anders verhält als du es erwartest.

Tipp: Nimm den 2k9 Ultimate, da gibts gute Färbung der Befehlszeilen und ein größeres Codefenster damit kannst du es dir selbst übersichtlicher machen. Ansonsten Kommentare. ich setze gerne <BEGIN FOREACH MONSTER > </END FOREACH MONSTER> oder sowas um meine Schleifen.

Kelven
23.04.2014, 08:22
Oder war es so, dass Break ans Ende der äußersten Schleife springt?

bugmenot
23.04.2014, 08:33
Oder war es so, dass Break ans Ende der äußersten Schleife springt?
Irgendwo hat das schonmal jemand gesagt. Kann selber nichts rekonstruieren.
Edit:
Ich glaube, es ging darum, dass die Schleife, in welcher der Break-Befehl auftrat eben nicht beendet werden konnte, weil stromabwärts des Breaks eine untergeordnete Schleife auftrat ...was rede ich da, der RM2k(3) kümmert sich nicht um Hierarchien.



489A78 <>DoLoop (2k3: 4B0C18)
489A7B mov edi,ecx //memorize Ptr on EventCommand
489A7D mov esi,edx ??
489A7F mov ebx,[esi+18] //get line the "<>Loop" is located at(?) (if memorized)
489A83 cmp ebx,0 //Is there any Loop at all?
489A86 jl //jump to function's end on invalid input
__________CheckForLoopStartLoop__________
489A88 ->mov edx,ebx //get line(-1)
489A8A | mov eax,[esi+14]/get Ptr on listed EventCommands
489A8D | c.sub_45E5B8 //get CommandLine
489A92 | cmp //Is the EventCommand = Loop? //any <>Loop triggers this
489A99 <<jnz loc_489AB3 //jump if not
489AA5 | mov eax,[eax+8]//get found LoopCommand's data
489AA8 | cmp eax,[edi+8]//Is this <>Loop the one that triggered sub_489A78?
489AAB <<jnz loc_489AB3 //jump if not
489AAD | inc ebx //line(-1) +1
489AAE | [esi+18],ebx //memorize the line at which the Loop starts
489AB1 | jmp //exit loop
489AB3 | dec ebx //previous line
489AB4 | cmp ebx,-1 //Was the first EventCommand reached already?
489AB7 --jnz
_________________________________________

489AC0 <>StopLoop (2k3: 4B0C60)
489AC1 mov ebx,edx ??
__________CheckForLoopEndLoop__________
489AC3 ->mov edx,[ebx+18]/get the current line (start at <>Loop)
489AC6 | mov eax,[ebx+14]/get Ptr on listed EventCommands
489AC9 | c.sub_45E5B8 //get CommandLine
489ACE | mov ecx,eax //get Ptr on EventCommand
489AD0 | mov eax,[ecx+4]//get EventCommand's data
489AD3 | test eax,eax //Is there any data?
489AD5 | jz //exit loop if the end of the EventScript was reached(?)
489AD7 | cmp //Is this line = StopLoop? //BreakLoop command
489ADC <<jnz loc_489AE3 //jump if the loop still continues
489ADE | inc [ebx+18] //line(-1) +1
489AE2 | ret //memorize the line the Loop ends at
489AE3 | inc [ebx+18] //next line
489AE6 --jmp
_______________________________________


Der StopLoop / BreakCycle Befehl merkt sich das nächste auftretende Ende einer Schleife als neuen Script-Entry vor ( [...+18] ). Wenn man den Befehl vor eine Schleife packt, wird diese beim ersten Ausführen übersprungen.


Edit:
@Cherry:


489AA5 | mov eax,[eax+8]//get found LoopCommand's data
489AA8 | cmp eax,[edi+8]//Is this <>Loop the one that triggered sub_489A78?
489AAB <<jnz loc_489AB3 //jump if not

Das hier? Was in sub_4B0C60 nicht mehr vorkommt.

Cherry
23.04.2014, 09:49
Ganz recht, ich wollte da eh mal einen Bugfix machen - man braucht ja nur überprüfen ob die TreeDepth (scriptline+8 afair) des Endloop-Befehls dieselbe wie die des aktuellen ist.

MagicMaker
23.04.2014, 09:59
Ich halte es ja sowieso für ratsam, immer am Ende einer Schleife den Break zu setzen.
Oder zumindest an einem Punkt, wo möglicherweise vorhandene Unterschleifen schon abgearbeitet sind.

bugmenot
23.04.2014, 11:28
Scheint wirklich zu funktionieren...

Gefixte Version:
download BreakLoopFix (http://share.cherrytree.at/showfile-14136/breakloopfix.rar)

Hierarchie-sensitive BreakCycle / BreakLoop Befehle. (wenn man diese außerhalb jeglicher Loops ausführt, dann springt das Skript an das Ende des Events)

Quetschi
23.04.2014, 12:16
Also hat das nur Probleme mit verschachtelten Loops?
Das heißt ich müsste also nur aufpassen, wo ich denn jetzt meine Break Loop-Befehle hinpacke und dann ist alles gut oder?

Ich hab mal den Patch von bugmenot ausprobiert:



- SCRIPT -
<> Change Variable: [1] = 0
<> Change Variable: [2] = 0
<> Loop
. <> Change Variable: [1] += 1
. <> Change Variable: [3] = V[2]
. <> Change Variable: [3] *= 2
. <> Show Message: test:
. : \v[1]
. : \v[2]
. <> Fork Condition: If Variable [1] >= 10 then ...
. . <> Show Message: lbreak1
. . <> Break Loop
. . <>
. : End of fork
. <> Loop
. . <> Change Variable: [2] += 1
. . <> Fork Condition: If Variable [2] >= V[3] then ...
. . . <> Show Message: lbreak2
. . . <> Break Loop
. . . <>
. . : End of fork
. . <>
. : End of loop
. <>
: End of loop
<> Show Message: test fertig


Ohne seinen Patch, läuft das ganze immer weiter, auch wenn Variable 1 größer als 10 ist. Die zweite Schleife wird dabei übersprungen.
Mit seinem Patch, springt das ganze nach dem ersten "lbreak2" scheinbar ganz an den Eventanfang, da mir die erste Nachricht dann die Werte 1 und 0 ausgibt. Das ganze bricht also früher ab als es soll und die Nachricht "test fertig" wird gar nicht erst ausgegeben.

@Corti: Ich benutze den 2k9 Ultimate und kommentiere auch, aber finde es trotzdem schöner wenn ich den Loop-Block anklicke und sofort alles markiert wird, was auch zur Schleife gehört.

@MagicMaker: Genau so würde ich es dann einfach machen, auch wenn man dann eventuell ein bisschen gucken muss, dass eine Unterschleife nicht 1x zu oft abgearbeitet wird. Allerdings sollte das kein großes Problem sein.

Cherry
23.04.2014, 12:33
Korrektur: Ich meinte, die TreeDepth muss natürlich kleiner als die aktuelle sein. Nicht gleich (und auch nicht einfach nur um eins kleiner oder so). Ich hatte vergessen dass man ja wahrscheinlich noch andere Treestrukturen braucht.

EDIT: Damn, ich muss wir was anderes überlegen. Weil:

0...<> Loop
1......<> Fork If ...
2.........<> Break Loop
2.........<>
1......: End Case
1......<> Loop
2.........<>
1......: End Loop
1......<> Message "Hello"
0...: End Loop

Dieses Beispiel würde dann nämlich trotzdem "Hello" ewig ausgeben, anstatt nichts.

Man müsste alle Zeilen durchgehen, einen Counter für jedes Loop um 1 erhöhen und für jedes End Loop um 1 verringern. Und wenn der Counter (angenommen er startet mit 0) kleiner 0 ist, DANN haben wir das richtige End Loop gefunden.

bugmenot
23.04.2014, 13:14
...dann gibt es aber trotzdem noch Probleme, wenn man per Label aus einer tiefergelegten Ebene in eine andere springt(?)

Es würde helfen, wenn irgendwo die TreeDepth der ParentLoop hinterlegt werden könnte.

Cherry
23.04.2014, 14:30
Hast du meinen Edit gelesen?

bugmenot
23.04.2014, 19:21
Okay, neuer Versuch:



4B0C50 <>StopLoop[+]
4B0C50 push ebx
4B0C51 mov ebx,edx //memorize Ptr on EventScriptData(?)
4B0C53 mov edi,[edx+18] //memorize Line# of the used BreakLoop
__________CheckForLoopEnd__________
4B0C56 ->mov edx,[ebx+18]/get the current line in the script
4B0C59 | mov eax,[ebx+14]/get Ptr on listed EventCommands
4B0C5C | c.sub_479710 //get ScriptLine
4B0C61 | mov ecx,eax //get Ptr on ScriptLineData
4B0C63 | mov eax,[ecx+4]//get ScriptLine's Command_ID
4B0C66 | test eax,eax //Was the end of the script reached already?
4B0C68 < jz loc_4B0C84 //jump if it was
4B0C6A | cmp eax,56C2 //Is the ScriptLine = : EndLoop?
4B0C6F <<jnz loc_4B0C86 //jump if not
4B0C71 | mov edx,[ecx+08]/get TreeDepth of the : EndLoop
4B0C74 | mov ecx,ebx //get Ptr on EventScriptData(?)
4B0C76 | mov eax,edi //get Line# of the used BreakLoop
4B0C78 | c.sub_4963F1 //call CheckLoopEnd[+]

| 4963F1 <>CheckLoopEnd[+]
| 4963F1 push ebx
| 4963F2 push edi
| 4963F3 push esi
| 4963F4 push ebp
| 4963F5 mov ebp,[ecx+14] //get Ptr on listed EventCommands
| 4963F8 mov ebx,eax //get Line# of the used BreakLoop
| 4963FA mov edi,edx //memorize TreeDepth of the : EndLoop
| 4963FC xor esi,esi //initialize Counter
|__________GetLoopStart__________
| 4963FE ->dec ebx //previous line
| 4963FF | cmp ebx,0 //was the start of the script reached?
| 496402 < jl loc_49642A //jump on invalid ScriptLine
| 496404 | mov edx,ebx //get current line
| 496406 | mov eax,ebp //get Ptr on listed EventCommands
| 496408 | c.sub_479710 //get ScriptLine
| 49640D | cmp //Is this line = <>Loop?
| 496414 < jnz loc_496419 //jump if not
| 496416 | dec esi //Counter -1
| 496417 <<jmp loc_496423
| 496419 > cmp //Is this line = : EndLoop?
| 496420 <<jnz loc_496423 //jump if not
| 496422 | inc esi //Counter +1
| 496423 >>cmp esi,0 //Is this a lone <>Loop?
| 496426 --jge //jump if not
|________________________________
| 496428 jmp loc_496431
| 49642A xor eax,eax //output = WrongEndLoop
| 49642C pop ebp
| 49642D pop esi
| 49642E pop edi
| 49642F pop ebx
| 496430 ret
| 496431 cmp edi,[eax+8] //Are the <>Loop and the : EndLoop at the same Depth?
| 496434 jnz loc_49642A //jump if not
| 496436 xor eax,eax
| 496438 inc eax //output = RightEndLoop
| 496439 jmp loc_49642C //ret

4B0C7D | test eax,eax //Is this the right : EndLoop?
4B0C7D <<jz loc_4B0C86 //jump if not
4B0C81 | inc [ebx+18] //output Line# to jump to after the BreakLoop
4B0C84 | pop ebx
4B0C85 ..ret
4B0C86 >>inc [ebx+18] //next line
4B0C89 |
4B0C8A --jmp

Quetschi
23.04.2014, 19:51
Also der Beispielcode den ich oben aufgeführt habe, funktioniert jetzt mit dieser Version.
Beide Schleifen laufen so durch wie sie sollen und am Ende kriege ich auch das "test fertig" ausgegeben.

Cherry
24.04.2014, 10:06
@bugmenot: Warum so kompliziert? Was war an meiner Lösung denn falsch? (Der aus dem Edit)

Ich meinte das so:

......<> Break Loop --- Counter=0, mal End Loop suchen gehen
......<>
...: End Case
...<> Loop --- Counter=1
......<>
...: End Loop --- Counter=0
: End Loop --- Counter=-1, richtiges End Loop gefunden!

bugmenot
24.04.2014, 12:08
Warum so kompliziert?
Habe mich wohl zu sehr auf eb!'s Code eingelassen und die aufgepickten :EndLoops auf richtige Zugehörigkeit überprüft... anstatt gleich das erste richtige :EndLoop suchen zu lassen...

download BreakLoopFix (http://share.cherrytree.at/showfile-14136/breakloopfix.rar)



sub_4B0C50 proc near
CODE:004B0C50 push ebx
CODE:004B0C51 push esi
CODE:004B0C52 mov ebx, edx
CODE:004B0C54 xor esi, esi
CODE:004B0C56
CODE:004B0C56 loc_4B0C56:
CODE:004B0C56 mov edx, [ebx+18h]
CODE:004B0C59 mov eax, [ebx+14h]
CODE:004B0C5C call sub_479710
CODE:004B0C61 mov eax, [eax+4]
CODE:004B0C64 test eax, eax
CODE:004B0C66 jz short loc_4B0C87
CODE:004B0C68 cmp eax, 2FB2h
CODE:004B0C6D jnz short loc_4B0C70
CODE:004B0C6F inc esi Counter +1 on StartLoop
CODE:004B0C70
CODE:004B0C70 loc_4B0C70:
CODE:004B0C70 cmp eax, 56C2h
CODE:004B0C75 jnz short loc_4B0C78
CODE:004B0C77 dec esi Counter -1 on EndLoop
CODE:004B0C78
CODE:004B0C78 loc_4B0C78:
CODE:004B0C78 inc dword ptr [ebx+18h]
CODE:004B0C7B cmp esi, 0 check Counter for lone :EndLoop
CODE:004B0C7E jge short loc_4B0C56 jump if the loop wasn't exited yet
CODE:004B0C80 nop
CODE:004B0C81 nop
CODE:004B0C82 nop
CODE:004B0C83 nop
CODE:004B0C84 nop
CODE:004B0C85 nop
CODE:004B0C86 nop
CODE:004B0C87
CODE:004B0C87 loc_4B0C87:
CODE:004B0C87 pop esi
CODE:004B0C88 pop ebx
CODE:004B0C89 retn
CODE:004B0C89 sub_4B0C50 endp

xXLittleWolfXx
12.05.2014, 00:48
Aloha Leute!

Ich hab mir ein paar Videos über den RPG Maker VX Ace angeguckt und war total begeistert. Ich wollte mir das Programm unbedingt runterladen, aber ich habe leider ein Macbook Air. Ebenfalls durch Videos bin ich schließlich drauf gekommen, den Maker mit Wine und WineBottler zu installieren. Das habe ich gemacht, das Icon ist da. Als ich es allerdings gestartet habe, kam eine Meldung, ich hätte das RTP nicht installiert, obwohl ich mir sehr sicher war, das gemacht zu haben. Um aber wirklich sicher zu sein, habe ich es nochmal versucht. Scheinbar habe ich etwas anders gemacht, denn jetzt kommt, wenn ich den Maker öffnen möchte, immer nur folgendes Fenster: (siehe Anhang)

Was zum Teufel kann ich tun? Was habe ich falsch gemacht? Bitte dringend um Hilfe!!!

Corti
12.05.2014, 06:05
Lass es auf Windows laufen
http://www.chip.de/downloads/VirtualBox-fuer-Mac-OS_36053602.html

Amnesia
19.06.2014, 13:12
Gibt es irgendeinen Trick, um im Vollbildmodus kein verzerrtes Bild zu haben? Bei mir ist alles immer in die Breite gezerrt, ist leider nicht grade schön :/. Danke schonmal im Voraus :).

Cornix
19.06.2014, 13:51
Gibt es irgendeinen Trick, um im Vollbildmodus kein verzerrtes Bild zu haben? Bei mir ist alles immer in die Breite gezerrt, ist leider nicht grade schön :/. Danke schonmal im Voraus :).

Meinst du für dein eigenes Spiel oder für alle Spiele generell?
Bei deinem eigenen kannst du wahrscheinlich (im XP geht es auf jedenfall) ein Ruby-Script verwenden um die Auflösung hoch zu setzen. Dadurch wird natürlich die Performance auch entsprechend schlechter.
Für alle Spiele generell kannst du das wahrscheinlich aber nicht machen außer vielleicht wenn du die Game.exe hacken könntest.

Morden
19.06.2014, 14:37
Gibt es irgendeinen Trick, um im Vollbildmodus kein verzerrtes Bild zu haben? Bei mir ist alles immer in die Breite gezerrt, ist leider nicht grade schön :/. Danke schonmal im Voraus :).

Ja, gibt es. Zum einen in dem Einstellungspanel deines Grafikkartenherstellers oder mithilfe von Tools, wie DXGL.
Schau mal in den Thread: http://www.multimediaxis.de/threads/140922-RMXP-Suche-Vollbild-Script-f%C3%BCr-16-9-Modus
Da hatte ich mal kurz beschrieben, wie man das einstellt.

PeAcE
MorDen

Ben
22.07.2014, 16:43
Hallo zusammen!

Ich wollte mal wieder meine Arbeit an meinem gecancelten Projekt Schuld und Sühne aufnehmen.
Allerdings stehe ich vor folgendem Problem:
Die Ressourcen und Maps sind alle noch da.
Die Database hat es allerdings völlig zerhauen, Somit muss ich praktisch alle Chipsets den Maps zuordnen,
Animationen komplett neu erstellen...
gibts da eine Abkürzung, wie ich mir das gefrimel ersparen kann (eventuell das ganze in ein neues Projekt reinimportieren)
Da ich circa 1000 Ressourcen aller Abstammungen habe wäre einszueins importieren auch sehr langwierig.

Kann mir da jemand helfen?

alpha und beta
26.07.2014, 18:01
Nabend,

und zwar hätte ich ein Problem. Nach längerer Zeit habe ich den RPG2k wieder in Benutzung. Doch bereits gleich zum Anfang habe ich (start?) Schwerigkeiten. Und zwar lassen sich Events, welche auf der selben Höhe wie der Spieler sind, nicht mehr per "Push Key" ansprechen. Das ist ja nicht normal. Habe auch schon vieles rumprobiert: Anderes Charset, neustart, neues Projekt, Maker neuinstalliert, etc. Es klappt aber nicht mehr. Bei den 2k3 und den Neueren jedoch schon.. :(

Sabaku
26.07.2014, 18:02
Hum, was hat das Event denn sonst noch für Eigenschaften?

alpha und beta
26.07.2014, 18:16
Abgesehen von den "Event Commands", ist es ein gewöhnliches Event, ohne leglichen Switch/Variablen - Spielereien. Der "Animation Typ" ist leer und "Movement Typ" auf Stay Still. Sprich: Ein Event, was die Selbe Höhe besitzt wie der Spieler, sich nicht bewegt und normalerweise einfach mit der Enter Tase angesprochen werden kann. Sollte das Event jedoch sich unter dem Spieler befinden, kann er mit "Push Key" angesprochen werden. Das gleiche gilt auch, wenn das Event die Selbe Höhe besitzt, jedoch ein Anderes "Event Start Condition", wie "On Hero Touch".

Stray
30.07.2014, 22:40
Kompatibilitätsmodi schon mal versucht? Oder eine ganz wirre Idee: Ist es eine (ver)alte(te) RPG Maker 2000 Version, oder gab es dannach schon neuere?

AnimeGirl
15.08.2014, 11:37
Ich versuche Alone - Eternal Nightmare zu spielen.
Aber ständig heisst es diese oder jene Datei kann nicht geöffnet werden.
Dann benene ich sie so wie verlangt und komme ein Stückchen weiter. Nur mit der Future3 Datei geht es nicht.
Und Speicherstand laden geht auch nicht im Titelbildschirm. T_T

North
17.08.2014, 15:00
Hast du überhaupt das RTP installiert?

AnimeGirl
17.08.2014, 15:30
Ohne ging es ja gar nicht.

Sabaku
17.08.2014, 16:01
Nhnnnng, würde ich so nicht sagen. Alone verwendet viele Dateien, die nicht aus dem RTP stammen. Was für Dateien fehlen denn genau? Sind es RTP-Dateien? Könnte mir vorstellen dass eine {Neu}Installation hilfreich wäre.

AnimeGirl
18.08.2014, 11:21
Grafiken wie Futur3 oder ChipSet 1. Obwohl letzteres da ist.

Ich habe das RTP 1.32 Add-On for RM2k installiert.

Edit: OK das war nur ein Zusatzding zum RTP. Hab jetzt das eigendliche RTP installiert und Intro lief durch.

Warum kann ich aber meine Speicherstände nicht laden? Es passiert gar nichts wenn ich im Titelbildschirm auf Laden gehe und die Aktionstaste drücke.

Corti
18.08.2014, 12:15
Das klingt als hättest du keine Spielstände. Sind da welche im Ordner? Schau mal nach *.lsd Dateien. Ansonsten: Startest du den Maker im Adminmodus oder hast du irgendwelches Windows-Profilzeugs laufen?

Kelven
18.08.2014, 12:56
Das ist glaube ich ein Bug vom Script, das dort benutzt wird. Man musste irgendeine Datei löschen, dann ging es wieder. Auf keinen Fall die Spielstände! Leider weiß ich nicht mehr welche.

AnimeGirl
18.08.2014, 13:14
Spielstände also Save.lsd Dateien sind da. Sie werden auch angezeigt wenn man im Spiel die Möglichkeit zum Speichern hat.

Sabaku
18.08.2014, 13:16
Schon im Alone-Thread (http://www.multimediaxis.de/threads/140546-Alone-Cold-Winter-Demo-1-0) direkt nachgefragt? Wenn man dazu irgendwo eine Lösung finden sollte, dann beim Entwickler selbst.

AnimeGirl
18.08.2014, 13:46
OK
Hab da mal mein Problem gepostet.

Rosa Canina
19.08.2014, 19:48
Ich wollte jetzt keinen eigenen Thread erstellen und probier es jetzt einfach mal so.

Ich habe ein ganz seltenes Problem, bei dem das Spiel plötzlich Game Over geht (Rm2k3)... und zwar das Standard-GameOver.
Vermutlich wird irgendwo die Party so verändert, dass für einen Bruchteil einer Sekunde ein eventuell toter Charakter der einzige
Charakter im Team ist. Allerdings finde ich nirgendwo im Code eine Stelle, in der das vorkommt (allerdings ist das die einzige
Erklärung, da es nur an dieser Stelle auftauchen kann).

Daher wollte ich wissen, ob man den Maker irgendwie so verändern kann, dass er keinerlei Standard-GameOver mehr ausführt,
wenn die Helden tot sind. DynRPG kann ich aus diversen Gründen nicht verwenden und ein AutoHeal auf 1 HP-Bugfix würde
effektiv alle Wiederbelebungsitems... vernichten.
Aber vielleicht weiß ja jemand eine andere Option.

bugmenot
20.08.2014, 00:38
KillSwitch
download KillSwitch (http://share.cherrytree.at/showfile-16380/killswitch.rar)

Verhindert ein GameOver außerhalb von Kämpfen, solange Switch[0999] = OFF
Wenn Switch[0999] = ON ist, dann muss nochmal ein manuelles Update (Änderung der Condition/Status oder Ändern irgendwelcher Statuswerte/HP/MP/...) erfolgen, damit ein GameOver ausgelöst wird.

download LunarIPS (http://fusoya.eludevisibility.org/lips/)
Erster Schritt: legt euch eine Sicherungskopie eurer RPG_RT.exe an (für den Fall der Fälle)
Lunar IPS öffnen -> apply IPS patch -> .ips-Datei (den Patch) wählen > Dateityp: all types -> RPG_RT.exe auswählen

Nach dem Patchen lässt sich die Switch_ID in der RPG_RT.exe unter 0x7B825 (2k) bzw. 0xA37F1 (2k3) per HexEditor umstellen. Oder packt den Patch in den Ordner DynPatches und:


[QuickPatches]
KillSwitch=4A43F1,#999


Prevents a GameOver outside of battle as long as Switch[0999] = OFF
A manual update (change condition or change any stat/HP/MP/...) is needed if Switch[0999] = ON to trigger a GameOver.

download LunarIPS (http://fusoya.eludevisibility.org/lips/)
First step: make a backup of your RPG_RT.exe (just in case)
open Lunar IPS -> apply IPS patch -> select the .ips file (this patch) -> file type: all types -> select the RPG_RT.exe

Upon patching you can change the Switch_ID in the RPG_RT.exe at 0x7B825 (2k) or 0xA37F1 (2k3) by using a HexEditor. Or put this patch into your DynPatches folder and:


[QuickPatches]
KillSwitch=4A43F1,#999

Rosa Canina
20.08.2014, 19:25
Hui!

Erst einmal danke. Ich hatte das irgendwo schon einmal gelesen, aber konnte mich nicht mehr entsinnen, wo und ob ich mir das
nur eingebildet hatte. XD

Also es scheint ganz gut zu funktionieren. Zumindest in meinem Testlauf jetzt scheint alles geklappt zu haben und der GO wird
nicht mehr aufgerufen. Super. Lustigerweise hatte ich sogar Switch 999 noch frei... dabei sind die davor und die danach alle
brav nacheinander belegt worden O_O Lucky me, so erspar ich mir Arbeit.

Like, Daumen hoch und keine Ahnung was. Hat mir echt geholfen. Danke.

BDraw
18.10.2014, 23:37
Kurze Frage: Gibt es irgendeine Möglichkeit, dem RPG Maker mp3-Dateien als Soundeffekt unterzujubeln?
Ich habe eine WAV-Datei, die aber satte 38 MB hat. Selbst wenn ich die Soundfrequenz auf 22000 runterregle sind das noch 11 MB und es klingt noch dazu furchtbar. Als MP3 ist das Dings nur 2 MB groß. Als BGM importieren wird leider nicht gehen, da ich ja zusätzlich noch eine Hintergrundmusik habe. :/

38 MB finde ich auch bei heutigen Internetverbindungen etwas happig für einen einzelnen Soundeffekt. Mir ist es beim Makern schnuppe, aber irgendwer soll das ja idealerweise hinterher auch noch runterladen.

Krassos
20.10.2014, 12:06
Kannst du das nicht einfach mit Audiacity auf 16 bit stellen und dann als Wave absichern?
So funktioniert es bei mir, alles was ich als Soundeffekt haben will kann ich dort erstellen und verbraucht sogut wie nichts.

Nunja ich habe eigentlich auch eine Frage....
Momentan vernichte ich für mein Spiel ein paar Bugs und möchte nicht immer das ganze Spiel hochladen, gibt es einen
Weg für den Maker2000 Spielpatches für mein Spiel zu erstellen?

LG

Corti
20.10.2014, 12:42
Der Installer des 2k3 Common RTP hatte diesbezüglich einen Kniff parat: Die Dateien lagen im Installer als Mp3 vor und wurden dann von einer Batchdatei zurück zu Waves gemacht. Ich fand das Prinzip interessant und habe ein Programm gebaut, dass die Umwandlung in MP3 und das Erstellen der Batchdatei zum Zurückwandeln automatisiert.

Das Programm habe ich nicht beendet, denn...

...wenn du das Spiel hochlädst, geschieht das als komprimiertes Archiv. Waves ähnlich wie Bitmaps sind sehr dankbare Kandidaten für Komprimierung. Schau mal wie groß die Datei in einer Zip noch nicht.
...die Batchdatei wäre ein weiterer notwendiger Schritt zum ordnungsgemäß laufenden Spiel. Ich schätze mehr Leute werden sich über einen Installer, einen zusätzlichen Klick oder sonst was ärgern, als sich Leute über weitere 10MB Dateigröße ärgern würden.
...das Programm wurde als offensiv-nutzlos aggressiver Anschlag auf die Qualität des Contents angesehen.


Fazit: Zipp das Ding.

Kelven
20.10.2014, 12:48
Waves ähnlich wie Bitmaps sind sehr dankbare Kandidaten für Komprimierung.
Dachte ich erst auch, aber zumindest bei meinen Test-WAVs war die Einsparung gar nicht so groß (21 MB -> 18 MB). Ok, mit 7z komme ich auf 16 MB.

Corti
20.10.2014, 12:55
Versuchs mal mit WinRar auf höchster Komprimierung. Den Tipp hat in 2011 mal jemand geschrieben...hey, das warst du :-D

Kelven
20.10.2014, 13:27
Dieser Kleven hat keine Ahnung!

Wie viel kommt dabei denn heraus? Hat WinRar (benutzt das überhaupt noch jemand, die 90er sind vorbei!) einen so viel besseren Algorithmus?

Stray
01.04.2015, 21:43
Was benutzt man denn statt WinRAR?

Cepanks
01.04.2015, 22:03
7Zip (http://www.7-zip.org/) natürlich.

goldenroy
01.04.2015, 23:52
WinRAR Masterrace, pls.
Ganz davon abgesehen könntest du dir vielleicht mal Audieremony (http://www.multimediaxis.de/threads/128606-Audieremony-Ogg-Mp3-Flac-Aiff-Mod-S3m-Xm-und-It-im-Maker-abspielen)von elvissteinjr ansehen, das kann das glaube ich.

Kaeyin
11.05.2015, 19:45
Ich wollte jetzt nicht extra einen separaten Thread erstellen, daher hier:

Ich habe folgendes Problem: Ich habe zwei Events "Flamme1" und "Flamme 2" erstellt, welche sich nach einer vorgegebenen Route bewegen. Berührt der Hero ein Event, oder andersrum soll er Schaden erleiden
und an einen anderen Punkt auf der Karte teleportiert werden. Jetzt passiert aber hin und wieder Folgendes: Der Held erhält Schaden, wird teleportiert und erhält nochmals Schaden. Das soll aber nicht passieren.
Irgendjemand eine Idee das Problem zu lösen?

Kann sein das ich da einfach nur auf dem Schlauch stehe :C

Ghabry
16.05.2015, 01:57
Ist der Algorithmus, mit dem der Schadenswert des Monster-Attack-Patterns "Self-Destruct" berechnet wird, jemandem bekannt? In der Hilfe steht nichts dazu :(

Cynder
16.05.2015, 02:41
Ich glaube das hat was mit dem strength / attack wert zu tun ... bin mir aber nicht sicher.
aber waere es nicht besser einen eigen skill zu machen ?

Linksawakening
16.05.2015, 10:36
Ich wollte jetzt nicht extra einen separaten Thread erstellen, daher hier:

Ich habe folgendes Problem: Ich habe zwei Events "Flamme1" und "Flamme 2" erstellt, welche sich nach einer vorgegebenen Route bewegen. Berührt der Hero ein Event, oder andersrum soll er Schaden erleiden
und an einen anderen Punkt auf der Karte teleportiert werden. Jetzt passiert aber hin und wieder Folgendes: Der Held erhält Schaden, wird teleportiert und erhält nochmals Schaden. Das soll aber nicht passieren.
Irgendjemand eine Idee das Problem zu lösen?

Kann sein das ich da einfach nur auf dem Schlauch stehe :C

Der Code innerhalb der Events wäre ganz praktisch ;) So lässt sich nur schwer schlussfolgern woran genau es hängt - so aus dem stehgreif würde ich auf die reihenfolge der befehle innerhalb
des Events tippen - aber wie gesagt: reine spekulation, daher bitte einmal den Code der Events bereitstellen und dann schaun wir mal :)

bugmenot
16.05.2015, 15:03
Ist der Algorithmus, mit dem der Schadenswert des Monster-Attack-Patterns "Self-Destruct" berechnet wird
Wie bei normalen physischen Angriffen. Doppelt so hoch wie bei normalen physischen Angriffen. Wird auf alle in der Party befindlichen Helden gleich berechnet. [1/1]STR(user) - [1/2]DEF(target) +|- 20% Varianz. Rechnet mit Integern. Aufrunden nicht vergessen.
Keine kritischen Treffer mit 300% DMG oder "charged attacks" mit 200% DMG.
Nur ist die Trefferwahrscheinlichkeit höher / trifft immer und "evade/reflect attacks" Conditions werden ignoriert. 100% Treffer. Wohingegen normale Angriffe von Gegnern (oder Helden ohne Waffe) 90% bzw. 70% mit "often misses" haben.

Und noch etwas Wichtiges:
10 phys.Influence = 91% Chance diese "cured by damage" Conditions überhaupt erst anzufangen zu berechnen.


Edit:

waere es nicht besser einen eigen skill zu machen ?
Die easyRPG-Leute wollen die 2000/2003 Algorithmen möglichst originalgetreu simulieren.
Ob jetzt raten oder endlos lange Exceltabellen als Grundlage dienen, das Balancing von alten Spielen wurde anhand der alten Algorhitmen durchgeführt und würde durch etwas Neues nicht wirklich "verbessert" bzw. "weniger kaputt" gemacht werden.

Kaeyin
16.05.2015, 20:50
@ Linksawakening

Event "Flamme 1"


Sound Effekt abspielen: "Flame 1"
Char. Blinken Hero 0.5s
Nachr: -1 Punkte
Var. ändern: [0420:PUNKTE] -1
Scrn-Tone-setzen: (R000,G000,B000,S000) 0,3s (W)
Teleport: 0033 Höhlenkarte (048,116)
Bew. Ereig: Hero Ges.Ob
Scrn-Tone-setzen: (R070,G070,B070,S070) 0,3s (W)
Wait. 0.0s

Das Event steht auf: Bei Heldberührung (Held, Ereignis)
Läuft eine eigene Route entlang. Positon: Unter Held.
(Mehrere Flammen laufen im Kreis. Der Spieler soll im Takt mitgehen müssen um nicht verletzt zu werden.)

Linksawakening
16.05.2015, 23:27
Hm, eine Frage noch dazu (um Vermutung zu bestätigen): Erhält der Held "tatsächlich" erneut Schaden? Also wird die Variable erneut reduziert oder blinkt er einfach ein Weiteres Mal?
Je nachdem wie es sich äussert werde ich das Ganze mal nachbauen um zu schauen ob es reproduzierbar ist ^^

Ghabry
16.05.2015, 23:53
Wie bei normalen physischen Angriffen. Wird auf alle in der Party befindlichen Helden gleich berechnet. [1/1]STR(user) - [1/2]DEF(target) +|- 20% Varianz. Rechnet mit Integern. Aufrunden nicht vergessen.
Keine kritischen Treffer mit 300% DMG oder "charged attacks" mit 200% DMG.

Okay, also kein Hexenwerk ;), thx. Da ist die Nennung der Battlealgorithmen in der Hilfe sogar extrem genau, dachte immer die verschweigt Details. Selbst die 80%-120% Schaden stehen da drin beim phy. Angriff.
Aber das mit den 200%/300% Schaden nicht.



10 phys.Influence = 91% Chance diese "cured by damage" Conditions überhaupt erst anzufangen zu berechnen.


Danke, das ist alles extrem nützlich, darauf kommt man ohne EULA-Verstoß niemals :D

bugmenot
17.05.2015, 00:07
Verzeihung, muss mich korrigieren:
Schaden doppelt so hoch wie normale Angriffe. Bei normalen phys.Angriffen gilt immernoch [1/2]STR(user) - [1/4]DEF(target) +|- 20% Varianz.
Und "increase evasion" Equipment (einmalig -25% Trefferchance) und sonstiges Senken der Trefferchancen gibt es beim Self-Destruct nicht. [Row] spielt keine Rolle.

Kaeyin
17.05.2015, 08:08
@ Linksawakening

Die Variable wird auch erneut reduziert. Ich kann da Morgen auch mal ein kurzes Video von machen. Habe das auch schonmal auf einer neuen Testmap ausprobiert, da passiert das gleiche.

Linksawakening
17.05.2015, 10:03
@ Linksawakening

Die Variable wird auch erneut reduziert. Ich kann da Morgen auch mal ein kurzes Video von machen. Habe das auch schonmal auf einer neuen Testmap ausprobiert, da passiert das gleiche.

Versuch mal den letzten Wait Befehl ganz unten auf 0,2 oder 0,4 zu setzen, ich vermute, dass sich die Sequenz einfach ein weiteres Mal beginnt zu wiederholen nachdem der Teleport
abgeschlossen ist (reine Spekulation). Habs bei mir nachgebaut und getestet (mit Wait auf 0,2) und es funktioniert. Allerdings war der Fehler auch mit 0,0 Wait für mich nicht reproduzierbar ... o.O

Kaeyin
17.05.2015, 19:48
Hab beide Wait-Zeiten ausprobiert. Leider immernoch das selbe. Jetzt dauern die Doppelten Vorgänge halt einfach auch länger :confused:
Ich werde morgen mal ein kurzes Video davon machen. Wenn ich die Flammen-Events auf Gleiche Höhe wie der Held setze, ist das Problem nicht.
So kommt die jeweilige Flamme aber auch aus dem Takt und bewegt sich nun später als der Rest.

Linksawakening
17.05.2015, 20:07
Hab beide Wait-Zeiten ausprobiert. Leider immernoch das selbe. Jetzt dauern die Doppelten Vorgänge halt einfach auch länger :confused:
Ich werde morgen mal ein kurzes Video davon machen. Wenn ich die Flammen-Events auf Gleiche Höhe wie der Held setze, ist das Problem nicht.
So kommt die jeweilige Flamme aber auch aus dem Takt und bewegt sich nun später als der Rest.

Ahh ok, aktuell ist das Event auf Below Hero? Daher war es für mich nicht reproduzierbar, bin von Same as Hero ausgegangen, so ist es logisch das es 2 mal auslöst,
da einmal wenn das Event den Held "berührt" sprich neben, über oder unter dem held, und ein zweites mal wenn du direkt auf die Flamme trittst :)

Mit Same as Hero funktioniert es logischerweise, da der Held nur gegen das Event laufen kann, nicht aber darauf.
Mit Below Hero könnte es helfen das Event nicht auf "On Toch Event/Hero", sondern auf "On Hero Touch" zu stellen.

Einfachste Lösung wäre aber, den Bewegungszyklus so zu modifizieren, dass es mit der "Same Level as Hero" Variante geht :)

Kaeyin
17.05.2015, 20:14
Das Problem ist das bei Below Hero der Held nur getroffen wird wenn er gegen eine Flamme aktiv rennt. Wenn er einfach stehen bleibt laufen
die Flammen unter ihm hindurch ohne das er das Event auslöst.


Einfachste Lösung wäre aber, den Bewegungszyklus so zu modifizieren, dass es mit der "Same Level as Hero" Variante geht

Das wäre am besten. Hast du eine Idee wie?

Linksawakening
17.05.2015, 21:38
Das wäre am besten. Hast du eine Idee wie?

Ich überleg mir was, geb dir noch mal Bescheid. Kannst du mir vllt einen Ingame Screen schicken? Wenns nicht jeder sehen soll auch gerne per PM,
nur damit ich mir das Umfeld besser vorstellen kann, so ist es denke ich einfacher eine Lösung zu finden ^^

Kaeyin
18.05.2015, 10:00
http://fs2.directupload.net/images/150518/s5la93kr.png (http://www.directupload.net)


Hab selber schon ein paar Sachen ausprobiert, aber irgendwie stehe ich da auf dem Schlauch...

Innocentia
18.05.2015, 10:49
Müsste es nicht funktionieren, wenn du bei Berührung einen Switch aktivierst, der dafür sorgt, dass alle vorerst Flammen stehen bleiben? Wenn der Teleport vollzogen ist, schalte den Switch wieder aus.

Ich habe es jetzt nicht ausprobiert, aber war jetzt eine spontane Idee.

- Das Inno -

Kaeyin
18.05.2015, 12:13
Jap, funktioniert! Warum ich da selber nicht drauf gekommen bin weiß ich allerdings nicht.
Danke Innocentia und Linksawakening.

Innocentia
18.05.2015, 12:18
Jap, funktioniert! Warum ich da selber nicht drauf gekommen bin weiß ich allerdings nicht.
Danke Innocentia und Linksawakening.
Ich verfolgte das Problem, seit du ihn hier gepostet hast. Aber ich kam jetzt auch durch den Screen erst auf die Idee, das Problem durch diesen Umweg zu umgehen, also von daher... Passt es schon :D

Freut mich, dass ich helfen konnte :)

- Das Inno -

Linksawakening
18.05.2015, 21:26
Jap, funktioniert! Warum ich da selber nicht drauf gekommen bin weiß ich allerdings nicht.
Danke Innocentia und Linksawakening.

Der Dank geht dann wohl mehr an das Inno ^^ Hab ja im Prinzip nix gemacht ausser raten, aber mir hätte - ähnlich wie Inno auch - der Screen
sehr viel weitergeholfen :) Hauptsache ist, dass das Problem gelöst ist und du fleissig weiterbasteln kannst ;)

Innocentia
18.05.2015, 21:32
Der Dank geht dann wohl mehr an das Inno ^^ Hab ja im Prinzip nix gemacht ausser raten, aber mir hätte - ähnlich wie Inno auch - der Screen
sehr viel weitergeholfen :)
Naaa, du hast mehr getan als ich. Ich hab nur eine spontane Idee gepostet, du hast es ja noch nachgebaut, um ihn zu helfen :)

Aber ja, hauptsache, er kann weiterwerkeln :) Gibt nichts schlimmeres, als dass man irgendwo hängt und man deswegen nicht am Spiel an sich weiterkommt.

- Das Inno -

Kvote
24.07.2015, 05:07
Aye Sir! und guten Morgen :D

Ich hab n kleines Problemchen ^_^
Ich hab vor Jahren angefangen meine ersten Menüs im 2k3 zu basteln, weil ich aber irgendwann den Elan verlor, wurde aber nicht mehr groß weiter getüftelt. Naja und die letzten Jahre habe ich zwar gemakert, aber nix eigenes gebastelt. Und so konnte ich trotz meines Mangels an Verständniss, dank meiner Erfahrung dennoch ein Menü zum laufen bringen xD Jetzt habe ich aber Folgendes Problem:

Mir ist ziemlich gut nachvollziehbar wie man im Standard-Verfahren via Events + Zahlencharset auf einer Map die Werte von HP/MP usw. anzeigt, jedoch die Anzeige für das LEVEL will sich mir nicht erschließen ._.

Ich zeigs euch mal anhand von Bildern....

Anzeige Level 1

http://fs2.directupload.net/images/150724/vfja3eck.png

Anzeige Level 48

http://fs2.directupload.net/images/150724/9u9vr2ib.png

Berechnungs-Skript

http://fs1.directupload.net/images/150724/x9tdsls2.png


...das wiedersprüchliche sind bei normalen berechnungen von HP und MP z.B. dass durch eine Variable via CB bei den 100ern 100 abgezogen werden und die Anzeige dennoch stimmt xD
Ich blick echt noch nicht WIE es funktioniert und es wäre schön wenn mir hierbei jemand helfen könnte ._. Und falls es noch andere "dinge" solcher Art gibt, wobei ich vielleicht was wichtiges beachten muss, wäre es super nett mir das auch zu sagen xD Würde mir viel Arbeit ersparen *_*

Corti
24.07.2015, 08:37
Hi! Die Schleifenlösung ist köstlich.

Eines solltest du schonmal wissen: Die Maker 2k und 2k3 haben einen Fehler in der Loop&Break-Funktion. Das Break springt nicht immer dahin, wo man es glauben mag. In diesem Fall sollte es aber klappen. Wenn du Schleifen bauen möchtest, bau sie dir per Label & Jump-Befehl.

Beispiel als Loop:


loop
// Sachen und Berechnung, Zeugs halt
Branch if ( BEDINGUNG )
break
End
end loop





label X
// Sachen und Berechnung, Zeugs halt
Branch if ( Ungleich BEDINGUNG )
jump to X
End


@Deine Berechnung:
Wenn du mal einen Alogorithmus nicht verstehst, dann setz dich mit Stift und Papier hin und rechne es anhand einer Beispielzahl durch. Auch gibt es die MessageBox, dort kannst du mit \v[0001] zB Variable 1 anzeigen lassen. Auf die Weise kannst du in jedem Schritt prüfen, was gerade passiert und so nachvollziehen, dass dein Script genau das tut was du von ihm erwartest. Sollte das nicht der Fall sein, dann finde auf diese Weise heraus bis zu welcher Stelle es genau tut was es soll. Wo hast du das Ding eigentlich her, wenn du nicht weisst, wie es funktioniert? Ein typischer Anfängerfehler ist es zu viel auf einmal zu bauen. Ganz viele Funktionen zu bauen, dann zu testen, irgendwas klappt nicht und keine Ahnung haben wo was schief gelaufen sein könnte. Teste alles sofort, jede Kleinigkeit. Wenn du Zahlen zerlegst und diese als Charset anzeigst, dann zerlege die Zahlen und guck in die Variablen ob das rauskommt, was rauskommen soll, und zeige sie erst dann per Charset an, so kannst du sicher sein, dass die einzelnen Dinge funktionieren, und dann findest du Fehler viel leichter und schneller.

Die Methode selbst ist unnötig kompliziert und besonders der Einerstellen, ich zeige das mal als Beispiel:

A=9
B=0

B soll den Wert von A haben.

A-1
B+1

A-1
B+1

A-1
B+1

A-1
B+1

A-1
B+1

A-1
B+1

A-1
B+1

A-1
B+1

A-1
B+1

A=0
B=9A=B

Und da ich dich nicht animieren möchte diese Art Rechung weiter zu verfolgen, möchte ich dir lieber zeigen, wie man es anders berechnen kann.
Es gibt im Maker bei den Variablen und den Rechenarten einen Operator Mod oder auch Modulo. Das ist der Rest einer Division. Wir erinnern uns an die Grundschule und den Rest beim geteilt rechnen.

13 / 5 = 2 Rest 3

Im Maker lässt die Division den Rest wegfallen und Modulo errechnet nur den Rest.
Divsion: 13 / 5 = 2
Modulo: 13 mod 5 = 3

Wie hilft uns das bei Zahlen?

Beispiel: Du hast die Zahl 123 und willst die Einerstellen extrahieren.
123 Mod 10 = 3

Beispiel: Du hast die Zahl 123 und willst die Zehnerstelle extrahieren.
123 / 10 = 12
12 Mod 10 = 2

Viel Erfolg!

BDraw
24.07.2015, 10:24
Zwischenfrage, da ich an dem Punkt jedes Mal paranoid werde:
Rundet der Maker da immer ab? Sprich, wäre
129/10=12 oder
129/10=13?

Corti
24.07.2015, 10:26
Integerdivision rundet gar nichts, es fällt nur weg.

Kvote
24.07.2015, 10:43
Uff ... okay ich versuch mal mit nem Danke, denn ich schätze deinen Versuch mir zu helfen... weißt du was mir anbei bei deinen Erklärungen zu Skripten und allem andern zum Maker, was du erklärst aufgefallen ist? Es ist höchst kompliziert erklärt x__x
Ehrlich, bitte nimm mir das nicht übel, aber ich versteh nur die Hälfte von dem was du erzählst xD

Gut wo fange ich an... am besten bei dem was ich VERSTANDEN habe...

- meine Berechnungen bzw. die Art wie ichs anstelle sind viel zu komplex und komplizieren alles unnötig
- es gibt wege es einfacher zu machen und du schlägst die "Mod" Funktion bei den Variablen vor
- die Mod-Funktion ist wie die Division in einer Rechnung


...was ich NICHT VERSTEHE und wobei mir kein Konkretes Vorgehen ersichtlich wird, es umzusetzen

- Modulo-Funktion -> Ehrlich ich hab versucht zu verstehen wie diese funktioniert... aber ohne ein SKRIPT, welches mir zeigt wie diese Arbeitet, wo und wie sie verwendet werden muss und .....alles andere! ...ohne das Verstehe ichs nicht ._.


Vielleicht mag es daran liegen, dass ich mit Mathe nicht gut kann, oder vielleicht bin ich auch der dümmste Hobby-Maker hier im Forum, aber ehrlich, ich kanns einfach nicht umsetzen.
Was ich aber weiß ist, dass ich ein praktisch veranlagter Mensch bin. Ich lerne viel und schneller durch probieren als durch Text lesen :o Ich tue mich z.B, konkret schwer zu verstehen was dieses beispiel mir sagen soll:


Beispiel: Du hast die Zahl 123 und willst die Einerstellen extrahieren.
123 Mod 10 = 3

Beispiel: Du hast die Zahl 123 und willst die Zehnerstelle extrahieren.
123 / 10 = 12
12 Mod 10 = 2
Warum extrahieren? Was macht das am Ende mit den angezeigten Zahlen?

Um es auf einen Punkt zu bringen:
Wie bringe ich den Maker dazu mir die Zahlen anzuzeigen, die ich brauche?
Wie muss ich dabei bei den Events vorgehen?
Ich brauche ein Beispiel-Skript, dass zeigt wie das alles zusammenhängt. Ich sag das jetzt nicht zu dir "persönlich", sondern allgemein ....

"Gib mir n Skript, welches HP bis zu den 100er Stellen errechnet und dann durch ein Event mit einem Zahlen-Charset anzeigt und ich verstehe wies funktioniert."
So war das bisher immer.... und ich glaube, so leid es mir auch tut Corti, anders verstehe ich es nicht xD Deine Erklärungen sind super sachlich, aber das versteht auch nur jemand der schon richtig in der Materie ist und sowas nicht zum 1. oder 2. mal macht :o Ich habs zwar schonmal vor n paar Jahren geschafft, ein Menü halbwegs zum laufen zu bringen, doch da gabs auch Probleme xD "

@Zu deinen Fragen und zum "Label"
Du hast schon recht, ein Label einzufügen is besser, doch damals hab ichs via Loop gemacht und es hat geklappt. Die Werte wurden bisher korrekt angezeigt. Doch jetzt hab ich wie dus oben in dem Beispiel darstellst ein Label eingefügt und mein Skript errechnet nurnoch die HP, da deren Berechnung im Skript die erste ist. Das Skript hat insgesammt 3 Werte die es BISHER anzeigen sollte. HP, MP und Level.
Ich werds jetzt nochmal so Probieren das ich Events erstelle die diese Werte einzeln berechnen, mal sehen ob das Funktioniert.
Ah und nicht das du denkst ich probiere nicht genug, ich hab mit den Labels ne weile rumgefusselt und geschaut ob es Funktioniert wenn ich sie woanders hinplaziere aber es geht nicht.

Zu der Frage woher ich dieses Skript habe, Forgotten E-book.
Leider, wirklich... das is iwie richtig schade... finde ich kein einziges Tutorial, welches sich mit einem Simplen Menü beschäftigt, welches am Ende (geht man Step by Step vor), tadelos funktioniert.


Ein typischer Anfängerfehler ist es zu viel auf einmal zu bauen. Ganz viele Funktionen zu bauen, dann zu testen, irgendwas klappt nicht und keine Ahnung haben wo was schief gelaufen sein könnte. Teste alles sofort, jede Kleinigkeit.

Halt mich bitte nicht für nen Anfänger, weil ich mit solchen Berechnungen via Modulo bisher nicht klarkomme, oder weil ich Dinge tue wie ein komplexes und veraltetes Skript zu verwenden. Ich kann vieles, und das auch so, dass es funktioniert. Dass Corti, liegt mehr daran, dass es einfach keine wirklich guten Tutorials für den 2k3 gab die JEDEM verständlich sind. Oft hat so ein misserfolg wie meiner, nur den Hintergrund dass man irgendwie allein alles rausfinden muss, da dass was einem gegeben wird schon zu kompliziert ist.
Naja, wie auch immer :)

-------

Jedenfalls, danke für deine Antwort und deine Zeit, welche du mir geopfert hast xD Ich hoffe dass mir noch ein Licht aufgeht und ich durch dass rumprobieren dahinter komme wie es funktioniert :) Wer weiß, vielleicht muss ich deinen Post einfach noch n paar Male durchlesen und verstehs dann :D Ich hoffs jedenfalls ^_^

~Kvote

Kelven
24.07.2015, 11:34
Ein Script von mir (http://www.multimediaxis.de/threads/142596-RM2k-Stelle-in-Variable-selektieren?p=3248342&viewfull=1#post3248342), mit dem sich Zahlen in ihre Bestandteile zerlegen lassen. Vielleicht hilft dir das ja weiter. Variable 11 ist die Zahl, die zerlegt werden soll und Variable 5 bis 10 sind ihre Stellen.

Modulo bedeutet: Teile die Zahl und wirf alles außer dem Rest weg. Normalerweise macht man es ja genau andersherum, man schaut, wie oft die Zahl reinpasst und wirft den Rest weg. Beim ganzzahligen Teilen zumindest.

Beispiel: 10 geteilt durch 3. Wie oft passt die 3 in den 10? Dreimal natürlich. Beim normalen Teilen ist 3 also das Ergebnis (den Rest 1 ignoriert man). Bei Modulo ist aber 1 das Ergebnis.

Corti
24.07.2015, 11:41
Wegen Scripten und Erklärungen:
Dich auf Sachen hin zu weisen und dir Sachen zu erklären kostet ein paar Minuten und ich brauche dazu nur dieses Browserfenster. Dir ein Beispielscript schreiben kostet ein vielfaches dieser Zeit mit allem was dazu gehört, Projekt anlegen, Testsituation schaffen, Projekt mit Script hochladen etc. diese Zeit werde ich mir nicht nehmen.

Dass du Beispielscripte möchtest kann ich nachvollziehen, aber du wirst aktzeptieren müssen, dass es diese kaum bis gar nicht gibt. Die Beispielkampfsysteme und Menüs von denen ich weiss sind alle über 10 Jahre alt und ich kenne keine Website mehr auf der man sie bekommen könnte. Die Zeit in der für 2k und 2k3 Tutorials und Beispielscripte verbreitet wurden ist lange lange her. Wer nicht selber Eventscripten kann, nimmt mittlerweile einen der neuen Maker, da kriegt man alles als Script und muss nix mehr können oder verstehen.
Wenn du im 2k3 noch eigene Menüs oder ein Kampfsystem entwickeln möchtest, dann kommst du nicht drum herum, das auf Eventebene selbst zu machen. Wie man das ganze schematisch und prinzipiell aufzieht, dafür findest du im Forum diverse Leute die das können und dir gute Tipps geben können. Dir das ganze vorscripten werden die aber höchstwahrscheinlich nicht, einfach weil das unfassbar viel Arbeit ist. 2k3 Eventcode ist zudem nicht sehr gut dafür geeignet, schematisch zu zeigen was passiert, weil es im Prinzip aus oft vielen Einzeloperationen besteht. Diese einzelnen Sachen sind im Grunde nur fummelig und nicht anspruchsvoll. Makercode sieht immer irgendwie unsauber aus, ist sowieso selten pädagogisch wertvoll.

Ich für meinen Teil kann und werde dir allein aus zeitlichen Gründen keine fertigen Beispiel-Scripte geben. Nur hilfreiche Tipps.


Halt mich bitte nicht für nen Anfänger, weil ich mit solchen Berechnungen via Modulo bisher nicht klarkomme
Als Anfänger bräuchte man Modulo wohl auch nicht, aber du willst ja fortgeschritten werden, also google mal danach ;-)

@Labels und HP:
Hast du auch jedes Label nur einmal benutzt? Wenn du mehrfach Label 1 hast, springt die Eventausführung trotzdem immer zum ersten Label 1.

HonigFürst
15.10.2015, 04:45
Hey Leute,


seit kurzem habe ich wieder Lust etwas mit dem Maker zu machen und bin mehr als nur aus der Übung...

Ich habe folgendes Problem: Ich möchte Event A zu Event B laufen lassen, dies wollte ich durch "Move To Variable Location" schaffen.
Dafür brauche ich die X und Y Koordinate von Event B und eine Map ID, die Koordinaten bekomme ich ohne Probleme, aber wie sieht es mit der Map ID aus?
Ich sehe da 2 Möglichkeiten die Map ID in eine Variable zu packen:
1. Ich schaue unter Map Properties nach der ID (in diesem Fall 0001) und bestimme die Variable auf 1
So nun habe ich also die X und Y Koodinate und meine Map ID für den Befehl Move to Variable Location... doch wenn ich es ausprobiere kommt Event A nicht zu B sondern der Bildschirm wird einfach Schwarz und ich verstehe beim besten willen nicht warum... Ist das doch der Flasche weg?

Edit: Habe gerade festgestellt das dieser Befehl nur für den Player gilt... Also brauche ich doch eine andere Lösung.

Ich wäre sehr froh wenn mir jemand verständlich weiter helfen kann :)




MfG

WeTa
15.10.2015, 09:51
Gibt es out of the box nichts, musst dir da dein Pathfinding selber basteln:
http://theory.stanford.edu/~amitp/GameProgramming/AStarComparison.html

HonigFürst
15.10.2015, 12:38
Aber es ist grundsätzlich möglich? Denn dann werde ich mich schon reinfuchsen, danke für den Link :)

Drakee
15.10.2015, 15:38
Das "Move" to Variable Location teleportiert im Übrigen auch nur, und lässt nicht laufen.
Grundsätzlich ist das möglich, via Pathfinding, doch im Maker ist Pathfinding immer so eine Sache. Z.B. sowas wie einen Dijkstra-Algorithmus, der ja wirklich sehr effektiv den kürzesten Path findet und z.B. auch in Navis genutzt wird, könnte man auch in seinem Spiel benutzen, wenn man dort Waypoints definiert. Sowas ist noch wesentlich forgeschrittener, als der Shit, den ich so hinkriege (zumindest stelle ich mir das so vor), sonst kannst du das nur sehr simpel über eine If-Abfrage, um herauszufinden, in welcher Richtung die gewünschten Koordinaten liegen und eine collisiondetection im Falle von Wänden im Weg, machen.

Ich weiß nicht, ob das deinen Zwecken entspricht, aber "Dijkstra + RPG Maker" in Google haben mich hierhin geführt: http://rpgmaker.net/tutorials/547/

Wichtig ist, dass die Waypoints so gesetzt werden, dass dazwischen keine Wände sind, wenn deine Figur z.B. durch ein Labyrinth finden soll.

EDIT: Aber mit RGSS scheint es auf jeden Fall möglich zu sein: https://www.youtube.com/watch?v=nI0dT288VLs
Also wahrscheinlich auch über DynRPG mit einem Pathfinding Plugin :)

Eines kann ich auf jeden Fall sagen: Pathfinding über Eventscripting geht nur mit vielen Einschränkungen.

EDIT2: Hier hat jemand ein ähnliches Problem: http://forum.rpg2000.4players.de/phpBB3/viewtopic.php?f=52&t=94807

Kazesui
17.10.2015, 12:51
Das "Move" to Variable Location teleportiert im Übrigen auch nur, und lässt nicht laufen.
Grundsätzlich ist das möglich, via Pathfinding, doch im Maker ist Pathfinding immer so eine Sache. Z.B. sowas wie einen Dijkstra-Algorithmus, der ja wirklich sehr effektiv den kürzesten Path findet und z.B. auch in Navis genutzt wird, könnte man auch in seinem Spiel benutzen, wenn man dort Waypoints definiert. Sowas ist noch wesentlich forgeschrittener, als der Shit, den ich so hinkriege (zumindest stelle ich mir das so vor), sonst kannst du das nur sehr simpel über eine If-Abfrage, um herauszufinden, in welcher Richtung die gewünschten Koordinaten liegen und eine collisiondetection im Falle von Wänden im Weg, machen.

Ich weiß nicht, ob das deinen Zwecken entspricht, aber "Dijkstra + RPG Maker" in Google haben mich hierhin geführt: http://rpgmaker.net/tutorials/547/

Wichtig ist, dass die Waypoints so gesetzt werden, dass dazwischen keine Wände sind, wenn deine Figur z.B. durch ein Labyrinth finden soll.

EDIT: Aber mit RGSS scheint es auf jeden Fall möglich zu sein: https://www.youtube.com/watch?v=nI0dT288VLs
Also wahrscheinlich auch über DynRPG mit einem Pathfinding Plugin :)

Eines kann ich auf jeden Fall sagen: Pathfinding über Eventscripting geht nur mit vielen Einschränkungen.

EDIT2: Hier hat jemand ein ähnliches Problem: http://forum.rpg2000.4players.de/phpBB3/viewtopic.php?f=52&t=94807

Der Dijkstra-Algorithmus is nicht sehr effektiv wenn es bloß darum geht den kürzesten pfad von A nach B zu finden, dann benutzt man eher A*.

Bei dem Tutorial die du gelinkt hast braucht man keine "Waypoints" und der vorgeschlagne Code hat keine Probleme um Komplizierte Wände rumzugehen (ohne Wände bräuchte man sowieso kein Dijkstra oder A*). Ein Komplizierter Labyrinth stellt für ihn kein Problem da. Der einzige wirkliche Einschränkung hier ist daß der Algorithmus das Spiel zum laggen bringen kann wenn der Pfad lang wird, weil es ein ganz grosses Eventscript ist.

Und ja, es gibt bereits ein Pathfinding Plugin für DynRPG: http://www.multimediaxis.de/threads/134334-RM2k3-DynRPG-Plugin-Pathfinding?highlight=pathfinding+dynrpg

HonigFürst
18.10.2015, 04:14
Vielen dank für eure Antworten, doch werfen sie sofort neue Fragen auf :)

Ich hab mir die Links angeschaut und habe versucht zu verstehen wie ich diese dinge auf den Maker übertragen kann. Für mich ist es halt nur wichtig zu wissen ob es möglich ist und das ist es soweit ich es verstanden habe.

Was genau ist denn DynRPG? bzw was für Plugins meint ihr? Sprechen wir da dann noch vom RPGMaker2003 und in welcher Art beeinflusst es den Maker? Ich möchte eher bei den Möglichkeiten des Makers bleiben und eher nur in der Not auf anderes zurückgreifen.

Denn wenn ich nicht verstehe was dort in diesen Skripten passiert, kann ich auch keine feineinstellungen vornehmen oder mögliche fehler beheben. Oder erweitert dieses Plugin nur den Maker und ich habe mehr Möglichkeiten in der Auswahlliste?
Und ist dies auch mit der Steam version des Makers möglich oder meckert am ende jemand?
Wie sieht es damit aus wenn ich mein spiel mal veröffentlichen möchte, werden die Spieler da probleme bekommen?
Mir ist bewusst das diese Fragen alle Noobig erscheinen müssen, aber so ist es halt. :)
Ich schaue mir natürlich die Links genauer an, vielleicht werde ich ja daraus schlau.

Edit: Habs mal installiert wie beschrieben und dann die Datei in den Ordner gezogen, wenn ich jetzt mein Spiel im Testmodus starte bekomme ich diese Error-Meldung. Jemand eine Idee?

So wie ich das verstanden habe liegt es am DynRPG, funktioniert wohl noch nicht mit der steam version.
Also brauche ich doch eine andere Lösung.^^
http://www.bilder-upload.eu/thumb/0d2038-1445141329.jpg (http://www.bilder-upload.eu/show.php?file=0d2038-1445141329.jpg)

MFG :)

Cherry
21.10.2015, 17:11
Dein Problem im Screenshot ist dass du aus irgendeinem Grund "dynloader.dll" in "DynPlugins" gepackt hast, wo es nicht hingehört. Allerdings stimmt es dass damit du deine Engine zu 1.08 downgradest (was dir der Maker auch beim Öffnen des Spiels sagen wird) und daher gegenüber der Steam-Version Features verlierst.

Isacz
25.10.2015, 12:39
Ich bin mir nicht sicher, ob das der richtige Faden für meine Frage ist, aber der bisher einzige, der meiner Meinung nach dafür passt. Falls ich mich irre, kann die Frage ruhig verschoben werden. Man verzeihe mir mein Frischlingdasein.


Das Problem ist folgendes:
Ich bin vor kurzem wieder über Zauberer & Prinzessinnen (http://www.multimediaxis.de/threads/134605-RM2K3-Zauberer-Prinzessin-%28Vollversion%29) gestolpert, nachdem ich vor Jahren begeistert die Demo gespielt hatte. Leider 'flackert' das Spiel zu weilen. Also ein kurzes, schwarzes Ausblenden alle paar Sekunden. Den Faden des Spiels wollte ich nicht belästigen, da ich schätze, dass der Fehler eben nicht alleine für dieses Spiel typisch ist.
Mein OS ist Win7 mit einer AMD Grafikkarte der R9 200 Serie.


Danke schon mal für die Hilfe.

relxi
28.02.2016, 01:41
Mich wurmt es, wie man es hinbekommen kann, die Grafik eines Events zu ändern, welches durch Variablen bestimmt wird. "Move Event" geht nämlich von einem festgelegten Event aus, und die einzige andere Grafikänderung überhaupt, die ich fand, ist die Änderung der Heldengrafik und damit leider irrelevant.
Harvest Moon - a new Life beispielsweise hat es irgendwie hinbekommen, beim Erntefeld die Grafiken der über 300 nahezu komplett leeren Events zu verändern. Es scheint dabei ein Event zum Einsatz zu kommen, welches anderen Events die eigene Grafik aufzwingen kann, da es nämlich das einzige Event ist, das per Move-Event-Befehl Pflanzen- und Feldzustandsgrafiken annimmt. Schade, dass sämtliche Variablen im Spiel unbenannt (zensiert?) sind und damit Reverse Engineering enorm schwer gestaltet ist. Ich hoffe, es findet sich ein Lösungsweg, mit welchem ich auf Plugins jeglicher Art verzichten kann.

BDraw
28.02.2016, 12:33
Ich bin nicht ganz sicher, ob ich verstanden habe, was du meinst, aber wenn es nur darum geht, die Grafik eines Events abhängig von einer Variable zu verändern: Hast du schon daran gedacht, einfach Eventseiten zu benutzen? Da kannst du ja sehr detailliert einstellen, exakt welchen Teil eines Charsets zu benutzen möchtest, und die Seite wird erst angezeigt, wenn die Bedingungen (bspw. ein Switch oder eine Variable) erfüllt sind. Dabei wird natürlich die darunterliegende Seite samt Grafik ersetzt.
Wenn du so ein Event dann 20x kopierst reagieren auch alle dieser 20 Events auf die jeweilige Variable.

Davon ab gäbe es tatsächlich nur den Move Event-Befehl, den ich aber nicht so mag, da der sehr unpräzise und hakelig ist. Eine Methode wie du sie vermutest ist mir aber nicht bekannt.

EDIT: was noch klappen könnte, wäre, ein Common Event zu nehmen, das die Grafik verändert (mit "this Event" als Ziel), das dann von jedem x-beliebigen Event aufgerufen werden kann. Da sich diese Call-Event + this Event-Sache aber zuweilen etwas unzuverlässig verhält und ich nie so ganz weiß, ob das jetzt Bug ist oder einfach nicht vorgesehen, würde ich das vorher fix mit einem kleinen Testevent ausprobieren.
Afair ist das auch so eine Sache, die von Version zu Version anders ist, insb. etwa bei dem offiziellen Release des 2k/3.

Ghabry
29.02.2016, 10:41
Genau, "ThisEvent" funktioniert in Common Events nicht. Da kommt ein Fehler, dass das Event nicht existiert und das Program geht zu. Meiner Meinung nach ist das ein Bug, da das Common Events relativ nutzlos macht, aber ist in allen Versionen so.
Der einzige Fall, wo kein Fehler passiert ist bei "Erase Event" in einem Common Event. Wenn man da "ThisEvent" verwendet, passiert einfach gar nichts.
Glaub dieses ThisEvent verhalten wurde auch in den offiziellen englischen Releases nie korrigiert.

Wir hatten das mal in EasyRPG eingebaut und das hat mehrere existierende Spiele kaputt gemacht, die versehentlich Erase Event mit ThisEvent in Common Events eingebaut hatten -.-

Und könntest mal prüfen, ob dieses harvest Moon nen modifiziertes RPG_RT verwendet. Mir ist zumindest ein anderes Harvest Moon (Mondlichts Kinder) bekannt, dass Inelukis KeyInput Patch verwendet (erkennt man an .script.wav Dateien im Sound und Music Ordner)

relxi
29.02.2016, 11:03
Ersteinmal danke für die Antworten!

Ich bin nicht ganz sicher, ob ich verstanden habe, was du meinst, aber wenn es nur darum geht, die Grafik eines Events abhängig von einer Variable zu verändern: Hast du schon daran gedacht, einfach Eventseiten zu benutzen? [...] Wenn du so ein Event dann 20x kopierst reagieren auch alle dieser 20 Events auf die jeweilige Variable.Die Schwierigkeit ist, dass es dann pro Event (an die 300 Stück) locker tausend Seiten oder tausend Abfragen (Move Event) vorhanden sein würden, was enorm auf die Kosten der Performance geht. Und kleine Änderungen an einem Detail würden natürlich das Löschen und Neukopieren von 299 Events verlangen, was die Entwicklungsdauer ebenso in die Länge ziehen würde.


EDIT: was noch klappen könnte, wäre, ein Common Event zu nehmen, das die Grafik verändert (mit "this Event" als Ziel), das dann von jedem x-beliebigen Event aufgerufen werden kann. Da sich diese Call-Event + this Event-Sache aber zuweilen etwas unzuverlässig verhält und ich nie so ganz weiß, ob das jetzt Bug ist oder einfach nicht vorgesehen, würde ich das vorher fix mit einem kleinen Testevent ausprobieren.
Afair ist das auch so eine Sache, die von Version zu Version anders ist, insb. etwa bei dem offiziellen Release des 2k/3.Die Methode habe ich tatsächlich schon vor meiner Fragenstellung ausprobiert, aber durfte auf Fehlermeldungen stoßen.


Und könntest mal prüfen, ob dieses harvest Moon nen modifiziertes RPG_RT verwendet. Mir ist zumindest ein anderes Harvest Moon (Mondlichts Kinder) bekannt, dass Inelukis KeyInput Patch verwendet (erkennt man an .script.wav Dateien im Sound und Music Ordner) A new Life nutzt offiziell den KeyPatch, ansonsten habe ich keinen Weg, modifiziert von unmodifiziert zu unterscheiden und die Funktionsweise herauszulesen (wenn es Decompiler nur wie Sand am Meer geben würde...)

Chefchen
30.08.2016, 10:10
Huhu! Hab ein Problem im 2k.
Ich will die Stats meines Char's speichern, um sie hinter wieder laden zu können.
Das Speichern der Variabeln funzt ohne probleme. Alle Variabeln werden auf den richtigen Wert gesetzt.
Versuch ich sie aber wieder zu laden, klappt das ganze nicht.
Da das ganze in einem Common Event Stattfindet, habe ich auch versucht die stats über ein normales map event zu starten, um das Commmon event selbst auszuschließen. Klappte nicht.
Kann mir einer sagen was ich falsch mache?
hier mal mein code



- SCRIPT -
. <> Comment: Statedit
. <> Fork Condition: If Variable [484] == 15 then ...
. . <> Show Message: Welcher Charakter?
. . <> Show Choices: Valnar/Alaine/Asgar/Alle Party Mitglieder (Option #2 as default)
. . : [Valnar] Handler (Option #1)
. . . <> Fork Condition: If Hero #11 is in party then ...
. . . . <> Show Message: Stats Speichern/Laden?
. . . . <> Show Choices: Speichern/Laden/Weiter (Option #3 as default)
. . . . : [Speichern] Handler (Option #1)
. . . . . <> Show Message: Welcher Slot?
. . . . . <> Show Choices: Slot 1/Slot 2/Slot 3/Abbrechen (Option #4 as default)
. . . . . : [Slot 1] Handler (Option #1)
. . . . . . <> Change Variable: [491] = HP of hero #11 ##Speichern
. . . . . . <> Change Variable: [492] = MP of hero #11
. . . . . . <> Change Variable: [493] = Level of hero #11
. . . . . . <> Change Variable: [494] = EXP of hero #11
. . . . . . <> Change Variable: [495] = ATK of hero #11
. . . . . . <> Change Variable: [496] = DEF of hero #11
. . . . . . <> Change Variable: [497] = INT of hero #11
. . . . . . <> Change Variable: [498] = AGI of hero #11
. . . . . . <> Change Variable: [499] = Max. HP of hero #11
. . . . . . <> Change Variable: [500] = Max. MP of hero #11
. . . . . . <> Show Message: Gespeichert!
. . . . . . <> Jump To Label: 4
. . . . . . <>
. . . . . : [Slot 2] Handler (Option #2)

. . . . . . <> Jump To Label: 4
. . . . . . <>
. . . . . : [Slot 3] Handler (Option #3)

. . . . . . <> Jump To Label: 4
. . . . . . <>
. . . . . : [Abbrechen] Handler (Option #4)
. . . . . . <>
. . . . . : End of choice
. . . . . <>
. . . . : [Laden] Handler (Option #2)
. . . . . <> Show Message: Welcher Slot?
. . . . . <> Show Choices: Slot 1/Slot 2/Slot 3/Abbrechen (Option #4 as default)
. . . . . : [Slot 1] Handler (Option #1)
. . . . . . <> Fork Condition: If Variable [491] > 0 then ...
. . . . . . . <> Change HP: Decrease HP of hero #11 by 9999 points ##Laden
. . . . . . . <> Change MP: Decrease MP of hero #11 by 999 points
. . . . . . . <> Change EXP: Decrease EXP of hero #11 by 9999 points
. . . . . . . <> Change Level: Decrease level of hero #11 by 98
. . . . . . . <> Change Ability: Decrease Max. HP of hero #11 by 999 points
. . . . . . . <> Change Ability: Decrease Max. MP of hero #11 by 999 points
. . . . . . . <> Change Ability: Decrease ATK of hero #11 by 999 points
. . . . . . . <> Change Ability: Decrease DEF of hero #11 by 999 points
. . . . . . . <> Change Ability: Decrease INT of hero #11 by 999 points
. . . . . . . <> Change Ability: Decrease AGI of hero #11 by 999 points
. . . . . . . <> Wait: 0,3 sec.
. . . . . . . <> Change Ability: Increase Max. HP of hero #11 by V[499] points ##Problem
. . . . . . . <> Change Ability: Decrease Max. HP of hero #11 by 1 points
. . . . . . . <> Change Ability: Increase Max. MP of hero #11 by V[500] points
. . . . . . . <> Change HP: Increase HP of hero #11 by V[491] points
. . . . . . . <> Change MP: Increase MP of hero #11 by V[492] points
. . . . . . . <> Change EXP: Increase EXP of hero #11 by V[494] points
. . . . . . . <> Change Level: Increase level of hero #11 by V[493]
. . . . . . . <> Change Ability: Increase ATK of hero #11 by V[495] points
. . . . . . . <> Change Ability: Increase DEF of hero #11 by V[496] points
. . . . . . . <> Change Ability: Increase INT of hero #11 by V[497] points
. . . . . . . <> Change Ability: Increase AGI of hero #11 by V[498] points
. . . . . . . <> Wait: 0,1 sec.
. . . . . . . <> Change Ability: Decrease ATK of hero #11 by 1 points
. . . . . . . <> Change Ability: Decrease DEF of hero #11 by 1 points
. . . . . . . <> Change Ability: Decrease INT of hero #11 by 1 points
. . . . . . . <> Change Ability: Decrease AGI of hero #11 by 1 points
. . . . . . . <> Change Level: Decrease level of hero #11 by 1
. . . . . . . <> Show Message: Geladen!
. . . . . . . <> Jump To Label: 4
. . . . . . . <>
. . . . . . : Else ...
. . . . . . . <> Show Message: No Save!
. . . . . . . <>
. . . . . . : End of fork
. . . . . . <>
. . . . . : [Slot 2] Handler (Option #2)
. . . . . . <> Show Message: Geladen!
. . . . . . <> Jump To Label: 4
. . . . . . <>
. . . . . : [Slot 3] Handler (Option #3)
. . . . . . <> Show Message: Geladen!
. . . . . . <> Jump To Label: 4
. . . . . . <>
. . . . . : [Abbrechen] Handler (Option #4)
. . . . . . <>
. . . . . : End of choice
. . . . . <>
. . . . : [Weiter] Handler (Option #3)
. . . . . <> Label: 4
. . . . . <> Show Message: Stats Ändern
. . . . . <> Show Choices: Level/HP/MP/Nächste Seite (Option #4 as default)
. . . . . : [Level] Handler (Option #1)
. . . . . . <> Show Choices: Level Hinzufügen/Level Abziehen/Level Laden (Option #2 as default)
. . . . . . : [Level Hinzufügen] Handler (Option #1)
. . . . . . . <> Input Number: 2 digits, Store in var. [501]
. . . . . . . <> Change Level: Increase level of hero #11 by V[501]
. . . . . . . <> Show Message: Level um \v[501] erhöht!
. . . . . . . <>
. . . . . . : [Level Abziehen] Handler (Option #2)
. . . . . . . <> Input Number: 2 digits, Store in var. [501]
. . . . . . . <> Change Level: Decrease level of hero #11 by V[501]
. . . . . . . <> Show Message: \v[501] Level abgezogen!
. . . . . . . <>
. . . . . . : [Level Laden] Handler (Option #3)
. . . . . . . <> Show Message: Aus welchem Slot Laden?
. . . . . . . <> Show Choices: Slot 1 Level:\v[493]/Slot 2 (xxxx)/Slot 3 (xxxx)/Abbrechen (Option #2 as default)
. . . . . . . : [Slot 1 Level:\v[493]] Handler (Option #1)
. . . . . . . . <> Show Message: Valnar wurde auf Level \v[493] gesetzt.
. . . . . . . . <>
. . . . . . . : [Slot 2 (xxxx)] Handler (Option #2)
. . . . . . . . <>
. . . . . . . : [Slot 3 (xxxx)] Handler (Option #3)
. . . . . . . . <>
. . . . . . . : [Abbrechen] Handler (Option #4)
. . . . . . . . <>
. . . . . . . : End of choice
. . . . . . . <>
. . . . . . : End of choice
. . . . . . <>
. . . . . : [HP] Handler (Option #2)
. . . . . . <> Show Message: HP Hinzufügen oder Abziehen?
. . . . . . <> Show Choices: Hinzufügen/Abziehen/Laden/Abbrechen (Option #2 as default)
. . . . . . : [Hinzufügen] Handler (Option #1)
. . . . . . . <> Input Number: 4 digits, Store in var. [501]
. . . . . . . <> Change HP: Increase HP of hero #11 by V[501] points
. . . . . . . <> Show Message: HP um \v[501] erhöht!
. . . . . . . <>
. . . . . . : [Abziehen] Handler (Option #2)
. . . . . . . <> Input Number: 4 digits, Store in var. [501]
. . . . . . . <> Change HP: Decrease HP of hero #11 by V[501] points, Allow death
. . . . . . . <> Show Message: HP um \v[501] verringert!
. . . . . . . <>
. . . . . . : [Laden] Handler (Option #3)
. . . . . . . <> Show Message: Welcher Slot?
. . . . . . . <> Show Choices: Slot 1 HP:\v[491]/Slot 2 (XXXX)/Slot3 (XXXX) (Option #3 as default)
. . . . . . . : [Slot 1 HP:\v[491]] Handler (Option #1)
. . . . . . . . <>
. . . . . . . : [Slot 2 (XXXX)] Handler (Option #2)
. . . . . . . . <>
. . . . . . . : [Slot3 (XXXX)] Handler (Option #3)
. . . . . . . . <>
. . . . . . . : End of choice
. . . . . . . <>
. . . . . . : [Abbrechen] Handler (Option #4)
. . . . . . . <>
. . . . . . : End of choice
. . . . . . <>
. . . . . : [MP] Handler (Option #3)
. . . . . . <> Show Message: MP Hinzufügen oder Abziehen?
. . . . . . <> Show Choices: Hinzufügen/Abziehen/Laden/Abbrechen (Option #2 as default)
. . . . . . : [Hinzufügen] Handler (Option #1)
. . . . . . . <> Input Number: 4 digits, Store in var. [501]
. . . . . . . <> Change MP: Increase MP of hero #11 by 1 points
. . . . . . . <> Show Message: MP um \v[501] erhöht!
. . . . . . . <>
. . . . . . : [Abziehen] Handler (Option #2)
. . . . . . . <> Input Number: 4 digits, Store in var. [501]
. . . . . . . <> Change MP: Decrease MP of hero #11 by 1 points
. . . . . . . <> Show Message: MP um \v[501] verringert!
. . . . . . . <>
. . . . . . : [Laden] Handler (Option #3)
. . . . . . . <> Show Message: Welcher Slot?
. . . . . . . <> Show Choices: Slot 1 MP:\v[492]/Slot 2 (XXXX)/Slot3 (XXXX) (Option #3 as default)
. . . . . . . : [Slot 1 MP:\v[492]] Handler (Option #1)
. . . . . . . . <>
. . . . . . . : [Slot 2 (XXXX)] Handler (Option #2)
. . . . . . . . <>
. . . . . . . : [Slot3 (XXXX)] Handler (Option #3)
. . . . . . . . <>
. . . . . . . : End of choice
. . . . . . . <>
. . . . . . : [Abbrechen] Handler (Option #4)
. . . . . . . <>
. . . . . . : End of choice
. . . . . . <>
. . . . . : [Nächste Seite] Handler (Option #4)
. . . . . . <>
. . . . . : End of choice
. . . . . <>
. . . . : End of choice
. . . . <>
. . . : Else ...
. . . . <> Show Message: Fehler!
. . . . : Die Stats von Valnar in Menschlicher
. . . . : Form sind nicht unterstützt!
. . . . : Bitte Vampir werden!
. . . . <>
. . . : End of fork
. . . <>
. . : [Alaine] Handler (Option #2)
. . . <>
. . : [Asgar] Handler (Option #3)
. . . <>
. . : [Alle Party Mitglieder] Handler (Option #4)
. . . <>
. . : End of choice
. . <>
. : End of fork

Corti
30.08.2016, 17:32
Die Stats von Makerhelden werden NICHT als Wert gespeichert. Sie sind die Summe aus der levelspezifischen Statskurve, Itemstats und einem Statspezifischen Differenzwert, der sowohl positiv als auch negativ sein kann.

Wenn du einen Statuswert ausliest, bekommst du die Summe. Wenn du nun zb -999 Atk setzt, wird das im Differenzwert gespeichert, da wird aber evtl. nicht abgefragt, was die für dich logisch scheinende Untergrenze ist. Versuch das Setzten mal über Auslesen des Heldenwertes und in Folge addieren oder abziehen der Differenz.

Warum übrigens sollte man das, was du hier tust wollen? Stats sind im Savegame enthalten, und Savegames in Variablen sind unpersistent.

Chefchen
30.08.2016, 20:52
Danke Corti. Klappt jetzt schon fast.
Naja, zum einen einfach weil wegen einfach so. Zum anderen ist es teil eines Cheatmenüs und stell dir folgende situation vor: Ein gegner ist dir zu stark, einmal stats gesaved, stats geändert, gegner besiegt und stats geladen.

TheKorken
17.02.2017, 00:04
Hallo!

Ich habe wieder ein Problem. Diesmal mach ich aber keinen eigenen Thread auf sondern versuche es mal hier:

Also ich habe ein Event bei dem ich das Bild ändern möchte. (Person steht normal da, dann soll die verletzte am Boden liegende Figur angezeigt werden.)
Wenn ich dann über Bewegungsroute festlegen->Bild ändern gehe dann wird das Event einfach unsichtbar sobald es soweit ist.
Wenn es dann nach dem Dialog wieder normal seien soll, dann switcht es auch wieder auf den normalen zurück.

Woran könnte das liegen?

Screenshot:
http://imgur.com/pCLWDp5

Vreeky
17.02.2017, 01:58
@TheKorken:
Schon von alleine drauf gekommen? Wenn nicht, dann versuch ich dir mal zu helfen. (Leider habe ich nur den VX-Ace und weiß nicht ob meine Angaben stimmen und was sich im MV alles geändert hat)

Ich gehe mal davon aus, dass du die Grafik des verwundeten Holzfällers nicht an die richtige Stelle im Charset-Raster gepackt hast und/oder bei der Bewegungsroute nicht den passenden Frame (das Feld im Raster auf dem die Grafik des Verwundeten liegt) mit Hilfe der Blickrichtung eingestellt hast. Ich erklär das mal mitnem Bild:

http://i63.tinypic.com/2wbu6w2.png
Packst du zBsp. die Grafik des Verwundeten auf das Feld mit dem Pfeil nach unten, so muss du im Bewegungsrouten-Befehl das Event nach UNTEN schauen lassen, VOR dem Grafikwechsel (natürlich ohne wait dazwischen). Wenn er aufsteht lässt du das Event wieder in Richtung des Helden schauen. Die Felder mit X solltest du für dein Vorhaben nicht benutzen, denn die können nicht so einfach über Bewegungsroute angezeigt werden! Wenn du das mit den Blickrichtungen einstellen weglassen willst, dann pack die Grafik des Verwundeten einfach auf ALLE Felder mit Pfeil!

Eine andere Möglichkeit ist, eine neue Seite im Event mit der benötigten Grafik zu erstellen, und der Seite nen Schalter zu verpassen. Schaltest du im laufenden Event per Schalter auf die andere Seite, dann dürfte sich nur die Grafik ändern ohne dass die Befehle auf der vorherigen Seite gestoppt werden. Switch ausstellen um die Grafik der ersten Seite wieder anzuzeigen.

TheKorken
17.02.2017, 10:23
...

Da wäre ich ja nie von alleine drauf gekommen!
Ja es war tatsächlich so, dass meine Figur nach links guckte und das Bild nur auf dem Platz vom nach unten gucken war.

Vielen Dank für die Hilfe es klappt jetzt! :)

TheKorken
18.02.2017, 01:27
Hey Ich bins wieder! ;)

Hab wieder ein Problem und diesmal geht es um das Interface im Kampf. Kann ich das ganze irgendwie selbst gestallten?
Es geht eigentlich nur um eine Kleinigkeit aber das Textfenster unter ist bei mir bei Sprachnachrichten nur halb so breit, so hätte ich es auch gerne im Battlescreen.

Screenshot:
http://imgur.com/lnGJMkD

Gibt es ein Plugin um einzustellen?

Edit: https://molegato.wordpress.com/2012/02/11/custom-battle-status-and-command-windows/
Dieses hier habe ich gefunden - Funktioniert das mit MV? .... und wie kann ich es runterladen? Es gibtr keine .js datei.

Sorry für meine Noobfragen! :D

Vreeky
18.02.2017, 02:29
Das ist zwar eigentlich nen 2k und 2k3-Thread aber naja ...

Hey Korken ... du musst dich nich für deine Fragen entschuldigen, dafür gibts ja so'n Forum wie dieses hier, aber vllt versuchst du es in Zukunft genauer zu beschreiben was du möchtest. Du willst also ein nur halb so breites KS-Interface? Naja ... das lässt sich auf jeden Fall verändern, wenn man weiß wo im Script. xD Da ich kein Plan vom MV habe, kann ich dir da nicht wirklich weiterhelfen ... aber ich habe kurz gegoogl'd, und wie's scheint, gibts da schon nen paar Scripts die das Interface verändern! Schau mal hier: https://atelierrgss.wordpress.com/rmv-battle-hud/ ... ich hab aber keine Ahnung wies funktioniert. Vllt kannst du dich reinfuchs'n.

Ich wünsche dir noch viel Spass beim makern. ^_^

BTW: Wie wärs wenn man den Thread-Titel ändert ... ?

TheKorken
18.02.2017, 03:36
Das ist zwar eigentlich nen 2k und 2k3-Thread aber naja ...

Hey Korken ... du musst dich nich für deine Fragen entschuldigen, dafür gibts ja so'n Forum wie dieses hier, aber vllt versuchst du es in Zukunft genauer zu beschreiben was du möchtest. Du willst also ein nur halb so breites KS-Interface? Naja ... das lässt sich auf jeden Fall verändern, wenn man weiß wo im Script. xD Da ich kein Plan vom MV habe, kann ich dir da nicht wirklich weiterhelfen ... aber ich habe kurz gegoogl'd, und wie's scheint, gibts da schon nen paar Scripts die das Interface verändern! Schau mal hier: https://atelierrgss.wordpress.com/rmv-battle-hud/ ... ich hab aber keine Ahnung wies funktioniert. Vllt kannst du dich reinfuchs'n.

Ich wünsche dir noch viel Spass beim makern. ^_^

BTW: Wie wärs wenn man den Thread-Titel ändert ... ?

Hey! Danke für die Antwort!
Ja ich dachte der Titel wäre einfach noch alt aber die Hilfe wäre für alle Maker, macht ja auch mehr Sinn oder?

Wie benutze ich denn dieses Plugin hier? Das hört sich genau nach dem an was ich Suche:
https://molegato.wordpress.com/2012/02/11/custom-battle-status-and-command-windows/

Allerdings ist es für Ace (funktioniert es mit MV?) und ich sehe auch keinen Downloadlink.

Das was du verlinkt hast sieht auch richtig gut aus, aber passt leider gar nicht zu meinem Ingamestyle.

Vreeky
18.02.2017, 04:00
Kuckuck^^

Da muss ich dich leider entäuschen ... die Scripts für den VX-Ace funktionieren leider nicht im MV, weil die, soweit ich's mitbekommen habe, unterschiedliche Scriptsprachen nutzen. Und in dem von mir verlinkten Script ist echt nichts für dich dabei? Das sah für mich so aus, als würd's da ne menge unterschiedlicher Styles geben, mindestens 5, oder so ... hmm ... schade dass dich keines der Interfaces anspricht. °_° Tut mit leid, aber dann kann ich dir nicht weiterhelfen.

An alle die sich mit'n MV auskennen: Helft dem Korken! XD

TheKorken
20.02.2017, 01:40
Hab gleich noch eine Frage mitgebracht:
Wie kann ich denn im Maker richtig titeln? Ich möchte jetzt etwas auf einer anhöhe titeln, aber wenn ich dann hinklicke dann entfehrnt er den Berg automatisch...
Hab mal nen Screenshot gemacht da sieht man es besser was ich meine:
http://imgur.com/tq6b201

Vreeky
20.02.2017, 11:50
Vreeky kommt gefliecht um wieder zu helfen~ =D

http://i65.tinypic.com/14j20sn.png
Die "Berge" und Bäume, und alles im Screen markierte, sind Auto-Tiles, und wenn du die passend überlappen willst, dann musst du ein wenig tricksen. Machs mal so: Halte SHIFT gedrückt und wähle mit dem rechten Mausknopf die bereits gesetzten Bäume am Maprand aus ... wenn du die jetzt (weiterhin SHIFT gedrückt halten) auf die Klippen/Berge setzt wirst du was tolles bemerken. ^_^ Es ist leider etwas umständlich, aber teste mal ein bissl damit rum, und vllt kommst du dann von selber dahinter wie das Map-System funktioniert.

Ich empfehle dir die Klippen weiter unten in der Tile-Auswahl (Tab A) zu nutzen! Die musst du zwar selber zusammenpuzzl'n, aber so kannst du da ohne Probleme Auto-Tiles und andere Sachen drüberpflastern.

PS: Korken und Ich schreiben hier einfach weiter ... bis IRGENDWER den Thread-Titel in "Allgemeine RPG-Maker-Fragen" oder so ändert! Höhö.

BDraw
27.02.2017, 11:23
Von mir mal ne Frage: In den letzten Jahren sind ja mehr und mehr Probleme aufgetaucht, 2k/3-Spiele auf heutigen Systemen zu spielen, ohne dabei irgendwelche Zusatzsoftware zu benötigen, die Späße wie den kaputten Fullscreen-Mode ausbügelt. Ist das auch bei der Steam-Version der Fall oder läuft die vernünftig?

Ich spiele wieder mit dem Gedanken, mein (oder zumindest ein Nebenprojekt, kA) Projekt doch auf dem 2k3 anzufangen, da ich damit halt vertraut bin, aber ich hab da wirklich keine Lust drauf, wenn die Probleme dann schon auf dem Level anfangen.

Amano
16.06.2017, 15:37
Hallo liebes Forum,

ich hatte bei meinem letzten Spiel ein Grafikproblem, welches ich nicht beheben konnte. Ich wollte einzelne Charsets in Monster umwandeln. Das sah vorerst auch normal aus, als ich es jedoch importiert habe, so das der Maker 2000 es erkennen konnte, gab es Farbfehler.

Mir wurde erklärt, dass es mit den 256 Farben zusammenhängen könnte, jedoch hat das selbe Prinzip bei Charsets für BattleAnimations funktioniert UND bei Chipsets als BattleBackground. Dazu kommt, dass die Figuren teilweise sehr wenig farbe hatten. Unter anderem nur grau.

Und selbst da gab es Fehler. ich verstehe nicht woran es liegt.

Weiß vielleicht jemand eine Lösung, die ich übersehen habe?

Grüße

Amano

Leana
16.06.2017, 22:59
Mit manchen Farbkonstellationen haben die alten Maker anscheinend ziemliche Probleme. Als ich für mein Spiel einen neuen Textboxhintergrund erstellt habe, hat mir der Maker aus einem Marmormuster Pixelmatsch gemacht, obwohl ich deutlich unter 256 Farben geblieben bin. Ich hab das Problem dadurch gelöst, in dem ich den Farbkontrast zw. Marmorierung und Basisfarbe erhöht habe. Da ich die Charsets nicht kenne, kann ich nicht sagen, ob ein stärkerer Kontrast auch bei deinem Problem hilft. Sollte dir dieser Hinweis also nichts bringen, dann poste doch mal hier (https://www.multimediaxis.de/threads/132501-Sprite-und-Pixelthread-IV?) ein Vorher- und Nachherbild. Dann lässt sich bestimmt Genaueres sagen.

Kelven
18.06.2017, 22:55
Die alten Maker können nur die 16-bit-Farbpalette nutzen, während die Grafikprogramme auf 24 bit zurückgreifen. Für alle Farben, die der Maker nicht anzeigen kann, nimmt er dann die nächstbeste Farbe, die auf der Palette ist.

Amano
20.06.2017, 13:46
@Leana: Danke für den Tipp.

@Kelven: Was müsste ich also konkret tun? Ich nutze übrigens Paint.NET zur Bearbeitung.

Kelven
20.06.2017, 17:57
Mehr als die Farben händisch anzupassen fällt mir leider nicht ein. Ich weiß auch nicht, wie man erkennt, welche Farbe zu welcher Palette gehört.

Amano
20.06.2017, 22:06
Eben genau das ist das Problem. Die Farbfehler entstehen in der Umwandlung. Es ist so: ich habe ein Charset, ich mache eine Pose, schneide diese aus, packe sie zu den Monstern und wandle sie dann durch exportieren um in ein Monster.
Es werden also keine Farben geändert, sondern Charset-akurate Farben werden übernommen, nur um dann fehlerhaft dargestellt zu werden.

Kelven
20.06.2017, 22:47
Am besten, du postest mal den Charset und das Monsterbild als Beispiel. Vielleicht lässt sich dann erkennen, woher die Fehler kommen.

Corti
22.06.2017, 08:55
Es ist echt nicht nachzuvollziehen was du hier genau machst.:confused:

BDraw
25.07.2017, 23:55
Sagt mal, weil ich gerade an was um der guten alten Zeit Willen skripte und es nach den ganzen Jahren einfach nicht mehr weiß:

Rundet der Maker auf oder ab bzw. ab wo? Sprich, würde bei 12/10 und 17/10 das selbe rauskommen (wenn ja: 1 oder 2?) oder würde der Maker da differenzieren? Ich umschiffe das Thema jetzt mit Hilfe von Modulo, aber so mal aus reiner Neugier.

Cepanks
26.07.2017, 00:10
Wenn ich das richtig in Erinnerung habe, wird gar nicht gerundet, er schneidet einfach die Nachkommastellen ab.

BDraw
26.07.2017, 11:03
Ja, so hatte ich das auch im Kopf. Aber gut, dann ist immerhin ohne zusätzliche Abfragen absehbar, was rauskommt xD
Dankesehr~

IndependentArt
26.07.2017, 22:35
wenn es um Prozentrechnung geht, umschiffe ich das zB ganz gerne, indem ich erst multipliziere und dann dividiere.

BDraw
26.07.2017, 23:00
Ne, ich habe (bzw. hatte) eine Variable, die mehrere Werte (bspw. a, b, c und d, alle maximal zweistellig) gleichzeitig enthält, gespeichert in verschiedenen Ziffern: aabbccdd

Wenn du nun an den Wert c möchtest, kannst du mit Mod 10'000 die ersten 4 Ziffern und dann mit /100 die letzten beiden abschneiden, übrig bleibt dann c (bzw. cc). Würde der Maker aber runden, gäbe es da u.U. Probleme, da sich die Werte dann plötzlich beim Auslesen potenziell gegenseitig verfälschen könnten.

Das ganze lohnt sich eigentlich nur, wenn man seeeehr lange Listen an Variablen braucht und sparen möchte oder Werte hat, die zusammengehören und die man auch zusammen gespeichert haben will und ist eher eine dieser Holzhammermethoden.

Amano
22.08.2017, 13:12
@Kelven
Hi, sorry für die späte Antwort.
Hier einmal eine kurze Auffrischung der Frage: Ich habe Charsets in Monstersets umwandeln wollen. Alles war soweit gut, doch sobald ich die Grafiken importiere, so dass der Rm2000 sie als Monstergrafiken anerkennt, ändert sich die Farbe.
Selbst Graustufen bei den Wölfen haben sich verändert. Ich weiß nicht woran es liegt. Die Bilder sind im 256 Farben Bereich UND werden als Charsets ja auch anerkannt.
Hier sind zwei Beispielbilder. Die Gegner als Charsets 24279 24280
Und hier nochmal die Gegner als Monsterset. 24281 24277 24278

Die Farben sind zwar minimal anders, aber es fällt dennoch auf. Wie kann ich so ein Problem beheben?

Mfg

Amano

Amano
03.09.2017, 10:50
Eine andere Frage wäre, ob man beim Rm2000 direkt das Item Menü öffnen kann und wenn ja, wo ich diesen Befehl finde?

BDraw
03.09.2017, 17:06
Eine andere Frage wäre, ob man beim Rm2000 direkt das Item Menü öffnen kann und wenn ja, wo ich diesen Befehl finde?
Von Haus aus gibt es leider keinen Befehl dafür.

Amano
03.09.2017, 18:26
Schade. Danke für die schnelle Antwort.

Brian Griffin
11.09.2017, 02:36
Man kann sich aber auch glaube ich ein eigenes Item Menü zusammen basteln das sollte auch gehen und wenn es einem das Wert ist dann würde ich da auch die Arbeit knallhart rein investieren damit es dem Spieler auch maximal zusagt. Tutorials findest du bestimmt hier auch im rpg Atelier.

Ben
26.03.2018, 16:36
Hey zusammen! :-)

Wie füge ich nochmal die Textboxbegrenzung ein? Also diese Striche, dass ich sehe, wie viel ich bis zum Rand der Textbox tippen kann, damit es beim Befehl "Show Message" vollständig angezeigt wird? Ich benutze den legalen 2k3. Danke im Voraus für die Hilfe. :-)

Leana
26.03.2018, 20:16
Beim legalen Rm2k3 sind diese Striche in der Texteingabebox schon vorhanden, da musst du nichts einfügen. Sie sind allerdings ziemlich blass, vielleicht sind sie dir deshalb nicht aufgefallen?

Pacebook
03.04.2018, 09:02
Hallo liebe technikmenschen,

ich habe zwei kleine fragen deren beantwortung mir sehr helfen würde.

1. die attacke 'double attack' im rpgmaker 2003. ich habe sie einigen gegnern gegeben damit sie gleich zweimal zuhauen. Aber dieser angriff wird im ggs. zur normalen attacke eingeblendet. kann man das irgendwie übersetzen? ich habe den maker durchsucht und nichts dafür gefunden.

2. dieses lichtpicture das unser vallas gemacht hat
http://fs1.directupload.net/images/180403/m4u923ne.png

wie kann ich das in den maker einfügen ohne auf einen bereich als transparent klicken zu müssen? wenn ich das mache fehlen dann in der anzeige pixel. ich versuche da den schaden gering zu halten in dem ich auf eine kleine stelle klicken, aber das muss doch anders gehen?
Eine beantwortung, das wäre nett von euch.

Noch einen schönen tag

Leana
03.04.2018, 12:43
Bei deiner ersten Frage kann ich dir leider nicht weiterhelfen, dafür kenn ich mich mit dem KS vom Maker zuwenig aus. Das Lichtpicture kannst du einfach so in den Picture-Ordner kopieren. Ein Importieren ist nur notwendig, wenn eine Farbe transparent sein soll.

IndependentArt
03.04.2018, 19:26
zu 2.: Du kannst bei der Anzeige des Pictures "use transparent color" einstellen, wo du dann entsprechend "no" wählen solltest.

Pacebook
07.04.2018, 10:48
Hallo,

ich danke euch. So simpel kann es sein. Aber komisch, dass das mit dem doppelangriff niemand weiß. Dann muss ich das wohl so lassen, es gibt schlimmeres.

Noch einen schönen Samstag.

Nagasaki
07.04.2018, 17:31
Deine Erklärung ist etwas unklar. Meinst du, dass die Gegner nicht mehr normal angreifen können? Oder liegt ein Anzeigefehler vor?
Hab es eben ausprobiert und kann keine Probleme feststellen.

Linkey
07.04.2018, 23:13
Habe den RM2K3 gerade nicht installiert, aber es klingt so, als würde die Attacke textlich als "Double Attack" angezeigt werden und Pacebook möchte dieses als "Doppelangriff" oder sonst wie übersetzen.

Pacebook
08.04.2018, 09:11
Hallo,

ja das stimmt linkey. ich hätte ein bild bereitstellen sollen.
https://picload.org/view/dawgpawa/x.png.html

Ben
15.09.2018, 15:25
Hallo zusammen,

ich habe ein Problem mit den Textboxen, besser gesagt mit der nicht sichtbaren Begrenzung, wieviel Text reinpasst ohne abgeschnitten zu werden.

Ich möchte, dass mir eine Begrenzungslinie angezeigt wird, was momentan nicht der Fall ist.
Da gab es doch ein Programm bzw auch einen Thread der das Problem behandelt, aber ich kann mich an keinen Suchbegriff mehr erinnern. Google hat mir auch nicht geholfen.

Könnt ihr es vielleicht?

Vielen Dank! :)