Archiv verlassen und diese Seite im Standarddesign anzeigen : It's Quiz Time!!
Naja, nehme mal an das passiert wenn man zb viele Heros hat und dann halt in einem Script die Party tauscht (oder im Kampf). Wenn man da dann vllt die "Max Number" verringert dann will der Maker ja immer noch drauf zu greifen, was zu einem Assertion Failure führt.
Ne, das führt dann zu einem "Event script referenced a hero that doesn't exist"
Oder man hat eine rm2k exe und will dann im rm2k3 ein Bild adressieren das über 20 liegt, was ja nicht gehen würd^^
Das ist die richtige Antwort. Exakt: Wenn man zu hohe Bild-IDs verwendet.
Auflösung der Bonusfragen:
Der Pfad bezieht sich auf den PC des Erstellers der RPG_RT.exe, nicht auf den PC des Spielers.
Und zwar bedeutet "Assertion Failure", dass ein Sicherheitscheck fehlgeschlagen ist.
Um zu verhindern, dass irgendwo im späteren Programmverlauf Fehler auftreten, die dann schlecht rückverfolgbar sind, verwendet man ein "assert(Bedingung)" um Dinge zu überprüfen, die eigentlich nie schief gehen sollten. Normalerweise gibts das aber nur in Debugbuilds, nicht in Releases.
In diesem Fall hatte der gute Lucifer in Zeile 526 der Datei "Picture.pas", die zum Sourcecode der RPG_RT.exe gehört, ein "assert(picture_id <= 20)" stehen.
Du bist dran.
netwarrior
02.11.2010, 14:47
Dann werd ich gleich mal die Freirunde ausnutzen.
Was passiert, wenn man im Rm2k ein Event mit der Position "Same level as hero" genau dahin teleportiert, wo gerade der Held steht?
netwarrior
Nichts Besonderes. Der Held bleibt immernoch mobil und läuft trotz Mask von dem "fremden" Event herunter, aber dann nicht mehr herauf.
netwarrior
02.11.2010, 17:11
Nichts Besonderes. Der Held bleibt immernoch mobil und läuft trotz Mask von dem "fremden" Event herunter, aber dann nicht mehr herauf.
Genau.
Du bist dran.
netwarrior
Leute, es macht keinen Spaß, wenn man ne richtige Antwort gibt und dann nie wieder reinkuckt und keine neue Frage stellt. So ist der Thread vor 2 Jahren auch versumpert.
Einfach: Wie kriegt man eine Zahlenanzeige per Events hin, wo eine Ziffer schmäler ist als 16 Pixel, ohne dafür 100 verschiedene Grafiken verwenden zu müssen? Oder anders formuliert: Wie kriegt man bei einer Event-Zahlenanzeige mehr als eine Ziffer auf ein Tile, mit möglichst wenig Aufwand?
Ich rate einfach mal:
Indem man jede Ziffer doppelt auf ein Charset legt, wobei eine von beiden auf der linken und die andere auf der Rechten Seite (linke, bzw. rechte 8 Pixel) liegt. Im Maker legt man die beiden Zahlen dann in jeweils ein Event, welche man dann beide übereinander legt.
Was einfaches: Was ist das?
- SCRIPT -
<> Change Variable: [91] = 1
<> Change Variable: [92] = 1
<> Change Variable: [93] = 1
<> Change Variable: [90] = 0
<> Label: 1
<> Fork Condition: If Variable [91] < V[82] then ...
.. <> Label: 2
. <> Change Variable: [93] = V[92]
. <> Change Variable: [93] += 1
. <> Fork Condition: If Variable [92] < V[82] then ...
. . <> Change Variable: [95] = V[V[92]]
. . <> Change Variable: [96] = V[V[93]]
. . <> Fork Condition: If Variable [95] > V[96] then ...
. . . <> Change Variable: [90] = V[V[92]]
. . . <> Change Variable: [V[92]] = V[V[93]]
. . . <> Change Variable: [V[93]] = V[90]
. . . <>
. . : End of fork
. . <>
. : Else ...
. . <> Jump To Label: 4
. . <>
. : End of fork
. <> Change Variable: [92] += 1
. <> Jump To Label: 2
.. <>
: Else ...
. <> Jump To Label: 3
. <>
: End of fork
<> Label: 4
<> Change Variable: [91] += 1
<> Change Variable: [92] = 0
<> Jump To Label: 1
<> Label: 3
Bemerkung: Ich will nicht wissen, was es macht, sondern nur, um was es sich handelt.
Ich geb mal einen Tipp, vielleicht antwortet dann ja jemand darauf:
Es ist ein bekannter Algorithmus
Der Algorithmus ist also bekannt ja? Das macht es natürlich viel einfacher :)
Ich schieß mal ins RTP-Grüne und sag, auch wenns wohl komplett falsch ist, Bubblesort. xD
Ich schieß mal ins RTP-Grüne und sag, auch wenns wohl komplett falsch ist, Bubblesort. xD
Treffer, versenkt!
Nun hast du die Ehre und Pflicht, die nächste Frage zu stellen. ;)
Oh Mann. xD
Na gut, was Einfacheres... Macht Show Screen was, wenn der Bildschirm schon hell ist? Wenn ja, unter welchen Bedingungen?
Bezieht sich das auf die Möglichkeit dem Einblenden von Pictures "special effects" hinzuzufügen indem man das ShowScreen davor setzt? (kann mich völlig irren, aber da war doch was)
100 Punkte für Seto Ka- Corti. (Names the same.)
Welcher Sonderfall der Eventpageverarbeitung kann sich im Standard-KS bei der Verwendung von Selfcast-Zaubern ergeben und welche Bedingung muss für das Eintreten erfüllt sein?
Das weiß nicht mal ich. Lös bitte auf.
Selfcastzauber, die eine Condition hinzufügen führen dazu, dass in der "Hero used X Command"-Eventpage /freigeswitchte/ Eventseiten ignoriert werden. Der Sonderfall ist das Überspringen jener Eventseiten falls Held auf sich selbst eine Condition ändert, bei anderen Zielen ists no prob.
Cherry darf.
Wie kann man es anstellen, dass man einen Assertion Failure-Fehler mit "LGD_Chipset.pas" bekommt, und zwar im Editor, und nix mehr tun kann im Projekt? Und wie löst man das Problem dann wieder?
Hab k.a. also rate ich einfach mal.
Theorie:
Der Fehler kommt, wenn man auf ner Map ein Chipset verwendet, dass nicht in der DB eingestellt ist und dessen Tileset-ID oberhalb der max. eingestellten liegt.
Lösung: Anzahl der Tileseteinträge hochstellen. Um trotz Editorcrash da hin zu kommen: Mapfile ersetzen solange.
Keine Lust ne Frage zu stellen.
Okay... dann Freirunde. Wenn bis heute Abend keiner was fragt, frage ich.
Was ist die performanteste Methode, einen Haufen Bedingungen, z.B. von 1 bis 100, aufzubauen?
Also so, dass je nach Zahlenwert einer Variable, 1 bis 100, was anderes passiert.
Engel der Furcht
20.11.2010, 21:02
RM Eventfactory?
Das ist vielleicht der einfachste, aber darum gehts ja nicht.
sofern man die werte irgendwie von 1 bis 99 umwandeln kann, wurd ich sagen es ist wenn man nen map event hat mit bis 99 seiten (was max ist wenn ich mich recht erinnere), und dann halt diesem event rufen mit n variabel die zu der seite passt. hat man mehr als 99 werten könnte man nen branch haben der guckt ob der wert über 99 ist, wenn ja nimm 99 davon und mach einem neuen check bis es unter 99 ist und dann dem entsprechend event rufen.
alternativ könnte man auch nen bedingungs pyramide bauen a la binärbaum, bzw. man hat erst ein branch mit dem mittelwert und guckt dann ob der wert den man hat gleich ist, wenn nicht dann obs kleiner oder grösser ist. wenn grösser dann geht man im "true" teil, ansonsten geht man in dem "else" teil, wo neue bedinungen mit nem neuen mittelwert für dem entsprechend restierende zahlen drin sind, bis man dem korrekten wert gefunden hat.
if(>50)
jump to LOL
else
if(1)
else
if(2)
else
if(3)
else
end
end
end
Label: LOL
if(100)
else
end
end
sofern man die werte irgendwie von 1 bis 99 umwandeln kann, wurd ich sagen es ist wenn man nen map event hat mit bis 99 seiten (was max ist wenn ich mich recht erinnere), und dann halt diesem event rufen mit n variabel die zu der seite passt. hat man mehr als 99 werten könnte man nen branch haben der guckt ob der wert über 99 ist, wenn ja nimm 99 davon und mach einem neuen check bis es unter 99 ist und dann dem entsprechend event rufen.
Es kann 100 Seiten haben. Insofern wäre das sogar noch schneller als ich eigentlich gedacht habe. Dafür bekommst du das Prädikat richtiger als richtig.
alternativ könnte man auch nen bedingungs pyramide bauen a la binärbaum, bzw. man hat erst ein branch mit dem mittelwert und guckt dann ob der wert den man hat gleich ist, wenn nicht dann obs kleiner oder grösser ist. wenn grösser dann geht man im "true" teil, ansonsten geht man in dem "else" teil, wo neue bedinungen mit nem neuen mittelwert für dem entsprechend restierende zahlen drin sind, bis man dem korrekten wert gefunden hat.
Das war das, was ich eigentlich gemeint hatte.
if(>50)
jump to LOL
else
if(1)
else
if(2)
else
if(3)
else
end
end
end
Label: LOL
if(100)
else
end
end
Das kapier ich jetzt grade nicht...
Wenn >50, springst du zu wenn 100; und wenn <=50 fragst du aber einzeln ab? Vielleicht meinst du ja auch einen Binärbaum, dann wärs richtig, aber Kazesui war schneller und ist demnach dran.
Habe mir schon gedacht dass du an dem Binärbaum gedacht hast, und habe desshalb den auch erwähnt.
aber mal zum frage:
Wie kann man mit event code herausfinden ob ein event innerhalb eines Kreisses ist mit nur einem Bedingung/Conditional branch?
zum beispiel:
Die 'x' markiert Tiles um einem Punkt 'O', und man soll herausfinden ob ein Event innerhalb die Fläche von 'x' drin ist.
xxx
xxxxx
xxxxxxx
xxxxxxxxx
xxxxOxxxx
xxxxxxxxx
xxxxxxx
xxxxx
xxx
Dafür soll nur einem Conditional branch benutzt werden, aber Variabel Operationen könnt ihr so viel wie ihr wollt benutzen. Der Kreis im Code is auch nur ein Beispiel und der Kreis muss nicht diese grösse haben, solange es halt ein Kreis bildet.
Für die, die ein bisschen Mathe können dürfte es nicht so schwer sein
Engel der Furcht
21.11.2010, 14:34
Hero X - ZielX
Hero Y - ZielY
If ZielX is greater than -4
>If ZielX is less than 4
>>If ZielY is greater than -4
>>>If ZielY is less than 4
ZIEL IST IM RADIUS
erstens wäre dass 4 conditional branches stadt eine, und zweitens wäre das kein Kreis sondern ein Viereck.
dein vorschlag wurde etwa so aussehen
xxxxxxx
xxxxxxx
xxxxxxx
xxxOxxx
xxxxxxx
xxxxxxx
xxxxxxx
MagicMaker
21.11.2010, 15:19
Pseudocode:
XTemp = ZentrumobjektX - ZielobjektX
YTemp = ZentrumobjektY - ZielobjektY
(Differenzen berechnen)
If XTemp == -4
If YTemp >=-1
If YTemp <=1
DRIN
End
End
End
If XTemp == -3
If YTemp >=-2
If YTemp <=2
DRIN
End
End
End
If XTemp == -2
If YTemp >=-3
If YTemp <=3
DRIN
End
End
End
If XTemp == -1
If YTemp >=-4
If YTemp <=4
DRIN
End
End
End
If XTemp == 0
If YTemp >=-4
If YTemp <=4
DRIN
End
End
End
If XTemp == 1
If YTemp >=-4
If YTemp <=4
DRIN
End
End
End
If XTemp == 2
If YTemp >=-3
If YTemp <=3
DRIN
End
End
End
If XTemp == 3
If YTemp >=-2
If YTemp <=2
DRIN
End
End
End
If XTemp == 4
If YTemp >=-1
If YTemp <=1
DRIN
End
End
End
Ich gehe hiermit die X-Spalten nacheinander ab und grenze die dafür erlaubten Y-Werte ein.
Ist eigentlich ganz simpel.
Um den Fall zu integrieren, dass es ausserhalb liegt, benutzt man entweder nen doppelten
Switch oder verschachtelt die Fälle in ELSEs.
Event X = Event X - Hero X
Event Y = Event Y - Hero Y
if(Event X < 0)
Event X *= -1
if(Event Y < 0)
Event Y *= -1
Event X += Event X
if(Event X <= AbstandInTiles) { // zb 4
//Held steht im Bereich Karoförmig (oder was das da is xD)
....
}
Für ein richtigen Kreis geht btw auch :A (Man muss nur das zusammen rechnen von X und Y anders machen)
Edit:
Habt ihr beiden da oben nicht gelesen das nur ein "Branch" genutzt werden soll?
Ich muss mich schlecht ausgedrückt haben. Es soll nur 1 bedingung / conditional branch / fork / if statement benutzt werden.
Es geht aber in die richtige richtung, ist schon richtig erstmal den differenzen zu finden.
R.D. ist schon auf was drin, ist aber immernoch 3 Conditional branches, und es ist immernoch da nicht wirklich ein Kreis, sondern ein anderem karoförmiges Viereck wie du selber geschrieben hast. Und es ist genau nach diesem "extra" mit dem zusammen rechnen von X und Y ich aus bin.
mit diesem extra braucht man die beiden branches die nachguckt ob eine der werte negativ sind nicht.
MagicMaker
21.11.2010, 16:26
Setz auf den Kreis ein Spezialterrain und catche die TerrainID von dem Zielobjekt.
Das geht mit einer einzigen Bedingung.
Multi-Master1988
21.11.2010, 16:32
@ Kazesui
Vielleicht ja auch so?:
- SCRIPT -
<> Change Variable: [3] = X position on map (tiles) of hero
<> Change Variable: [4] = Y position on map (tiles) of hero
<> Get Event ID: (V[3], V[4]), Store in var. [1]
<> Fork Condition: If Variable [1] != 1 then ...
. <> Show Message: Falsche Position!!
. <>
: Else ...
. <> Show Message: Richtige Position!!
. <>
: End of fork
Ich denke mal das war nicht gemeint aber so ungefähr würd
ich es machen und dann bei jemdem Schritt das Ereigniss neu aufrufen lassen.
Lg
Multi-Master1988
MagicMaker
21.11.2010, 16:37
Das Problem in deiner Variante ist, du wolltest sicher abfragen ob jemand auf einer genauen
Stelle steht (nichtmal das scheint korrekt gelöst worden zu sein). Hier haben wir allerdings
einen Toleranzkreis der mit einer einzigen Bedingung abgefragt werden soll, ausser der
Möglichkeit in meinem vorherigen Post fällt mir dazu nicht wirklich nochwas ein.
Ausser vielleicht mit ein paar Pointern die die gleiche Fork immerwieder neu aufrufen,
nur dadurch halt verändern.
haha, mist. Hab vergessen irgend eine einschränkung gegen terrain / event ID reinzutun. War nicht die lösung an die ich gedacht habe, und ne besonders gute lösung ist es auch nicht da es dann ziemlich statisch bleibt, aber es ist eine lösung, desshalb werd ich es für korrekt halten, und sagen dass MagicMaker dran ist.
Die lösung nach dem ich war, benutzt dass "x²+y² = 1" ein kreis bildet, also könnte es so gelöst werden:
ziel_x -= zentrum_x
ziel_y -= zentrum_y
ziel_x *= ziel_x
ziel_y *= ziel_y
ziel_x += ziel_y
if( ziel_x < abstand)
drin
end
wo "abstand" ein wert im bezug von dem kreis wäre, was normaleweise von n² bis (n+1)² liegen sollte, wo n dem radi von mitte bis aussen in entweder horizontaler oder vertikaler richtung entspricht.
MagicMaker
21.11.2010, 17:20
und ne besonders gute lösung ist es auch nicht da es dann ziemlich statisch bleibt
Deswegen würd ich die auch nie wirklich anwenden. Dazu muss das schon sehr strikt sein.
MM will nichts fragen. Daher:
Welcher Bug bei "Show Message" kann das Spiel abstürzen lassen?
MM will nichts fragen. Daher:
Welcher Bug bei "Show Message" kann das Spiel abstürzen lassen?
Falschreferenzieren von Variablen, wie bei der Nonne in deinem Testprojekt.
Folgefrage: Wie behebt man den Fehler? xD
lordkrinito
22.11.2010, 14:55
Vlt einfach in der Database die Variablen bis zum Maximum alle aktivieren xD
MagicMaker
22.11.2010, 15:20
Es ist eigentlich völlig egal wenn eine Variable genannt wird ob sie im Bereich des vom
Maker in der Datenbank definierten ist. Das einzige was mir eigentlich zu Absturzbug
eingefallen wäre in Message ist das Benutzen eines Backslashes ohne daraus einen
Befehl zu formen. ~> crash
<> Show Message: \
<>
Ich denke, Corti meinte z.B. "\n[\n[x]]". Den Fehler hab ich in der No-ATB-Demo irrtümlich bei der Nonne gemacht (im 2-Helden-Fall), und weil er das angesprochen hat, hab ich es richtig gewertet. Das mit "\" wäre auch richtig gewesen.
Cherry ist dran und Cherry, dein Postfach ist voll, man kann dir nix mehr schicken. Und Cherry~ magst mir meine ICQ nummer mal schicken? (per PM) Ich hab se verlegt und vergessen und du bist einer von 3 Leuten auf der Welt, mit denen ich per ICQ kommuniziere.
Öh, ich hab weder die Frage wie man das behebt richtig verstanden (meine eigentliche Antwort darauf wäre "ääh, richtigstellen?" gewesen), noch wieso mein Versuch MagicMaker zu erklären was du mit deiner Antwort gemeint hast eine richtige Antwort ist, aber mir solls Recht sein http://cherrytree.at/misc/smilies/065enton.gif
Mir gehen langsam die Fragen aus, btw.
Was ist die einfachste Methode, animiertes Gras einzubauen, ohne Animationstiles zu benutzen? (Zum Beispiel weil man mehr/weniger Frames oder ein anderes Tempo haben will)
Also spontan würde ich sagen mit Charsets die man über Eventgrafiken anzeigen lässt. kann man dann auch verschieden schnell einstellen und man hat mehrere Frames (auch weniger)
MagicMaker
22.11.2010, 17:04
Also ich würd ja meinen man wechselt einfach das Chipset aus und verlegt die Animationsframes auf verschiedene Dateien.
lordkrinito
22.11.2010, 17:14
3 oder so Pictures, die dann loopen lassen und tada animiertes Gras^^
Hm, MM's Variante ist wohl ungefähr gleich gut wie die, die ich meine. Es gibt für beides Pro und Contra.
Da MM aber sowieso nie fragen stellen will, warte ich mal, ob die Antwort noch kommt, die ich eigentlich suche.
und ich wurde vorschlagen den "tile substitution" zu benutzen, wo man "statische" tiles benutzt, die halt zusammen einem animation bilden
welcher von diesem kodes "geht" schneller (in maker zeit) und wieso sind die zwei anderen lahmer?
loop
Variable Oper:[0001] + , 1
Variable Oper:[0002] - , 1
end loop
label 1
Variable Oper:[0003] + , 1
Variable Oper:[0004] - , 1
Comment: Variabel 3 wird grösser
Comment: Variabel 4 wird kleiner
jump to label 1
label 1
Branch if Var [0666] is 0
Variable Oper:[0005] + , 1
Else Handler
Variable Oper:[0005] - , 1
End
jump to label 1
Variante 3... sag ich mal...
Bei 1. gibs loops die im Maker langsamer sind als Label, beim 2. wird ja noch ein SUB gemacht, in 3 hingegen nur ein ADD + ein einfaches JMP.
könnte logisch erscheinen, der maker stimmt dir aber nicht zu
Engel der Furcht
22.11.2010, 20:51
Methode 2 würd ich einfach mal so sagen.
Dort wwerden die Varis nur geändert und sofort zum Label gesprungen.
Bei Methode 1 ist ja ein Loop,die mehr Rechenzeit benötigen...
Bei Methode 3muss doch zusätlich noch die Bedingung abgefragt werden...
ist lustiger weise (eigentlich eher trauriger weise) nicht richtig
Dann ist es logischerweise das erste, weil da am wenigsten Eventzeilen abgearbeitet werden müssen (ja, Kommentare zählen da auch dazu!). Obwohl Loops länger brauchen als ein "Jump to Label", ist das daher schneller.
und das ist völlig richtig
Irgendwie klar, wenn von 3 Antworten 2 schon als falsch markiert sind.
Was einfaches: Wie kriegt man im RM2k3 im Standard-KS einen bewegten Hintergrund hin? Und welche Arten Bewegung sind da ausschließlich möglich?
Genial daneben #2 (heisst: ich rate):
Über den "Change Panorama" Befehl.
Bewegungen: Scrollen Vert. + Horiz.
Eher daneben als genial http://cherrytree.at/misc/smilies/002wink.gif
Damit meine ich, nein, es gibt im Kampf gar kein "Panorama"-Bild, sondern ein "Backdrop"-Bild.
Wie kriegt man im RM2k3 im Standard-KS einen bewegten Hintergrund hin? Und welche Arten Bewegung sind da ausschließlich möglich?
Bei Terrain muss man statt Background Frame auswählen (die Bilder müssen dementsprechend natürlich im Frame-Ordner liegen) und kann dann Bilder für Vordergrund und Hintergrund einstellen und diese sich horizontal und/oder vertikal bewegen lassen.
Dann muss man beim Start eines Kampfes nur noch diesen Hintergrund einstellen.
Okay, da mir nichts wirklich gutes einfällt:
Was passiert auf manchen Rechnern wenn ich ein Picture rotieren lasse?
MagicMaker
24.11.2010, 22:56
Was passiert auf manchen Rechnern wenn ich ein Picture rotieren lasse?
Welcome to laggy ruckely ruckelnd Ruckel-Lagging-Land.
Die FPS gehen in den Keller.
Okay, neue Frage.
Wie kommt das hier zustande? Es wurden keine Patches oder sowas verwendet, einfach der normale RM2k3.
http://share.cherrytree.at/showfile-1976/screenshot_328_untitled.png
MagicMaker
26.11.2010, 17:18
Ich vermute grade mal ganz grob das passiert wenn das Farbfeld für den Hintergrund
in Menüs auf transparent im Bild geschaltet ist.
Das ist nicht die ganze Antwort.
Engel der Furcht
26.11.2010, 17:41
Wenn die FensterHintergrundfarbe = Transparenzfarbe = MenüHintergrund ist.
also so:
7468
Nein, mit dem Menühintergrund hat das gar nichts zu tun.
Die richtige Antwort: Wenn, wie MM sagte, der Fensterhintergrund transparent ist, und, wenn das Savemenü gecallt wird, gerade bei Message Display Options die Messagebox auf Transparent geschaltet ist!
Freirunde.
Multi-Master1988
28.11.2010, 19:18
Ich bin jetzt einfach mal so frech und nimm mir die Freirunde
Also wozu dient der folgende Code und welche Variabeln muss ich für eine Korrekte
Anzeige per Charas benutzen?
- SCRIPT -
<> Change Variable: [206-213] = 0
<> Change Variable: [215] = Money
<> Loop
. <> Fork Condition: If Variable [215] >= 100000 then ...
. . <> Change Variable: [207] += 1
. . <> Change Variable: [215] -= 100000
. . <>
. : Else ...
. . <> Fork Condition: If Variable [215] >= 10000 then ...
. . . <> Change Variable: [208] += 1
. . . <> Change Variable: [215] -= 10000
. . . <>
. . : Else ...
. . . <> Fork Condition: If Variable [215] >= 1000 then ...
. . . . <> Change Variable: [209] += 1
. . . . <> Change Variable: [215] -= 1000
. . . . <>
. . . : Else ...
. . . . <> Fork Condition: If Variable [215] >= 100 then ...
. . . . . <> Change Variable: [211] += 1
. . . . . <> Change Variable: [215] -= 100
. . . . . <>
. . . . : Else ...
. . . . . <> Fork Condition: If Variable [215] >= 10 then ...
. . . . . . <> Change Variable: [212] += 1
. . . . . . <> Change Variable: [215] -= 10
. . . . . . <>
. . . . . : Else ...
. . . . . . <> Fork Condition: If Variable [215] >= 1 then ...
. . . . . . . <> Change Variable: [213] += 1
. . . . . . . <> Change Variable: [215] -= 1
. . . . . . . <>
. . . . . . : Else ...
. . . . . . . <> Break Loop
. . . . . . . <>
. . . . . . : End of fork
. . . . . . <>
. . . . . : End of fork
. . . . . <>
. . . . : End of fork
. . . . <>
. . . : End of fork
. . . <>
. . : End of fork
. . <>
. : End of fork
. <>
: End of loop
<> Change Switch: [59] = OFF
Lg
Multi-Master1988
Engel der Furcht
28.11.2010, 19:47
Das soll ne Geldanzeige werden...?
Das Teil funktioniert sogar.
Und für die Charas machst du die Startkonidition,ob eine Variable (ich nehm jetzt 207) größer als 1 ist,diese bekommt dann eine 1 als Grafik,ist sie 2 eine 2.
Multi-Master1988
28.11.2010, 21:33
@ Engel der Furcht
Richtig!Und ja das Teil funzt. ;-)
Lg
Multi-Master1988
Handschuh
30.11.2010, 00:13
Hättest du das "Money" aus dem Code genommen, hätte ich mir vielleicht sogar den restlichen Code anschauen müssen um die Lösung zu wissen...
Nachdem Engel der Furcht ja offensichtlich nichts mehr fragt...
Warum und unter welchen Umständen laggt das Spiel bei der Verwendung von "Show Picture"-Befehlen? Wieso nicht z.B. bei Change Graphic von Events? Was kann man alles tun, um das Laggen bei Pictures zu verhindern?
Nachdem Engel der Furcht ja offensichtlich nichts mehr fragt...
Warum und unter welchen Umständen laggt das Spiel bei der Verwendung von "Show Picture"-Befehlen? Wieso nicht z.B. bei Change Graphic von Events? Was kann man alles tun, um das Laggen bei Pictures zu verhindern?
Theorie:
der mir bekannte "Lag" bei Show Picture liegt dran, dass Daten von der Festplatte geladen werden. Kann man verhindern indem man nicht ShowPicture sondern MovePicture benutzt. Vorraussetzung ist, dass man das Picture vorher unsichtbar mit ShowPicture geladen hat.
Bei Animationen in nem AKS ist es sinnvoller die Frames nicht zeitlich mit ShowPicture zu laden sondern sie alle auf einen Streifen zu packen und diesen zu verschieben.
Soweit richtig. Bei "Change Graphic" wird nur beim ersten Mal etwas geladen, denn der Maker verwendet einen Charset-Cache im Speicher.
Du bist dran.
Nächste Frage:
Wie kann man im Standard-KS simpel einen "Mortal Strike-Effekt", also eine Reduzierung eingehender Heilung implementieren?
Da 2 Tage um hier die Auflösung:
Die simpelste Art der Heilreduzierung kann durch verwendung eines 'Attributes' umgesetzt werden. Genau wie bei Schadensspells kann das 'Attribute' eines Heilspells als Modifikator für den Heilwert verwendet werden.
So weit so gut. Als nächstes muss man wissen was die "Reduce Resistance to Attribute/DefenseDown"(whatever its translated)-Flag in den Spells macht. Dieser Haken sorgt dafür, dass ein gegen Feinde gerichteter Zauber die Resistenz des Ziels gegen die angewählten Attribute verringert. Praktisch ändert dies den 'Rate of Effects'-Buchstaben. Ist die Einstellung auf z.B. C wird sie danach B sein. Maximal eine Abweichung vom Originalwert ist möglich.
Ein Attribut sieht normal so aus:
A=200.B=150,C=100,D=50,E=0 oder so~ bei angewählten C würde ein "reduce resistence"-Spell den Attributwert auf B ändern, aus dem Modifikator 100 wird 150.
Der Trick für Mortal Strike ist, aufsteigende Werte im Attribut zu haben.
A=0.B=50,C=100,D=150,E=200
Ein "Reduce Resistence"-Angriffsspell senkt das Attribute des Ziel dann von zB C auf B und somit den Modifikator der Heilung von 100 auf 50 -> Heilung reduziert um 50%
Grandios^^
Hm, was anderes: Wo kann ein überraschender "Event script referenced an item that doesn't exist"-Fehler überall seine Ursache haben?
Roverandom
08.01.2011, 21:03
Offensichtlich in Wolfenhain. :D
Prinzipiell kann man diesen Fehler provozieren, indem man ein Item am Ende einträgt, es woanders verwendet/zuweist, und dann die Itemliste wieder kürzt, ohne vorher die Verwendung gelöscht zu haben. Aber das wäre ja nicht, wie in der Frage betont, überraschend... und ne neue Frage wüsste ich eh nicht. Harre also gespannt der Antwort, die da kommen mag! :)
Naja, du hast damit schon Recht. Ich habe mit "überraschend" auf die Möglichkeit angespielt, dass z.B. bei einem nicht verwendeten Helden dieses Item als Startausrüstung eingetragen ist o.ä., wodurch es beim Spielstart gleich mal crasht.
Du bist trotzdem dran :)
Roverandom
09.01.2011, 17:53
Es gibt davon abgesehen angeblich noch eine weitere Ursache für "Event script referenced an item that doesn't exist", welche - wie man vernimmt - auch dann noch auftritt, wenn im gesamten Projekt tatsächlich jeglicher Bezug auf Items entfernt/vermieden wurde.
Ich kann es bei mir jetzt nicht reproduzieren, habe aber an verschiedenen Stellen von unterschiedlichen Leuten davon gelesen. Ich hoffe im Sinne des Quiz', dass es sich tatsächlich so verhält und es sich nicht nur um eine frei ausgedachte und glaubhaft präsentierte Erklärung für bereits genannten Sachverhalt handelt.
Wer die weitere Ursache nennt, ist dran - wer darauf kommt, welche früher häufig kursierende Erklärung ich damit meine selbst wenn sie sachlich falsch sein sollte, erhält einen persönlichen Bonuspunkt! :)
Lös mal auf bitte. Interessiert mich auch.
Roverandom
12.01.2011, 21:06
"Event script referenced an item that doesn't exist" hatte ich gegoogelt, als Wolfenhain (und damit Makerspiele insgesamt) es mir das erstemal um die Ohren gehauen hatte. Dabei fand ich insbesondere in englischsprachigen Foren vielfach die Erklärung, dass es eine (in Abhängigkeit von der benutzten RPG_RT.EXE - Version jeweils unterschiedliche) Mindestgröße der Datenbank gebe, deren unterschreiten ebenfalls so quittiert würde. Das hieße, wenn ich ein Projekt von einer völlig genullten Datenbank aus aufziehen wollte, statt an die Vorgaben anzuhängen, könnte der Fehler anfangs ebenfalls auftreten, obwohl doch die Bezüge auf die genullten Items ihrerseits genullt wären. Ich meine mich erinnern zu können, dass dort z.B. für Version 1.04 der RPG_RT.EXE 44 beliebige Datenbankeinträge als Minimum genannt wurden. In meiner Version hier (1.08 glaube ich? Wo steht das nochmal?) konnte ich das dagegen nicht ausmachen, weshalb ich in Betracht zog, es handele sich möglicherweise auch nur um einen populären - weil glaubwürdig ausgeschmückten - Mythos.
Jedenfalls kann man dies für das Auftreten in Wolfenhain so wohl ausschließen.
Den technischen Hintergrund - Mythos oder Wahrheit - vermagst du selbst also wesentlich besser einzuordnen, als ich. :)
Den Enterbrain-Typen traue ich durchaus zu, dass die irgendwo eine Item-ID fix in den Code eingebaut haben. Solche Unsinnigkeiten haben die ja öfter gemacht (im Gegensatz zu ASCII-Leuten), siehe Strings in Ressourcen statt Database oder der Reflect-Skills-Bug (der dadurch verursacht wurde, dass die auf direkt die Heldennummer hernehmen, um einen Partymember anzusprechen, was zwar bei einer Party bestehend aus den Helden (1, 2, 3, 4) gut geht, weil da die Partymembernummer gleich der Heldennummer ist, bei anderen aber nicht.)
Ich müsste den Fehler aber mal persönlich sehen und dann debuggen, um das feststellen zu können.
Freirunde!
Update:
Ich habe eben von Nemica ein Projekt bekommen wo der Fehler auftritt.
Ich weiß jetzt, warum: Das passiert, wenn man die Itemanzahl verringert während eines der jetzt nicht mehr existierenden Items als Startausrüstung eines Helden eingestellt ist, denn dann ist das Item noch immer als Startausrüstung eingestellt...... allerdings steht da jetzt "(None)" - warum?
Der Grund ist einfach: Der RPG Maker listet ja da nicht alle Items, sondern z.B. nur alle Waffen auf, oder alle Schilde, etc. In diesem Fall ist das Item, da gelöscht, keine Waffe/kein Schild/etc. mehr! Es erscheint daher nicht mehr in der Liste, kann also auch nicht ausgewählt werden, drum wählt der Maker stattdessen "(None)", obwohl in Wahrheit noch immer das alte Item da eingestellt ist - welches nicht mehr existiert.
Die Lösung: Einfach mal bei dem entsprechenden Helden (oder halt bei allen, wenn man sich nicht sicher ist), händisch noch mal die Ausrüstung auf (None) stellen. Dann sollte es klappen :)
mfG Cherry
PS: Ich wiederhole: Freirunde!
Wenn keiner will, nehme ich mir mal die Freirunden:
Nehmen wir an, ihr habt Linux auf eurem Rechner und habt es geschafft, dass Maker-Spiele darauf laufen (unter wine, kein virtuelles Windows, Musik und alles drum und dran funktioniert)
Was, vom Ersteller hervorgerufenes, kann euch trotzdem mittels Abstürze den Spielspaß nehmen und wie kann man das wieder ins Lot rücken (was auch mal mehr, oder weniger Arbeit bedeuten kann)?
Cherry verwendet Phönixfeder...
Thread ist auferstanden!
@R.F.: Wüsst ich auch gern.
Aber was anderes: Wie sind die ScreenX-/ScreenY-Koordinaten eines Events zu verstehen? (Welchen Punkt benennen sie?)
Engel der Furcht
07.06.2011, 13:30
Soweit ich weiß,sind die Koordinaten immer 8 Pixel nach links/rechts (also in der Mitte) und ganz unten in der Y-Achse.
Also so:
http://npshare.de/files/338d549e/Unbenannt.png
Engel der Furcht
07.06.2011, 16:17
Was passiert,wenn man ein Show Picture-Befehl und anschließend einen Teleport (No Transition,Fade IN) ohne Show und Erase macht?
Engel der Furcht
07.06.2011, 20:11
Ja,aber es hat nen tollen Effekt,weil das Picture weggeblendet wird.
Man kanns auch durch steigende Transparenz machen,aber der Effekt sind nicht ganz so schäbig aus.
Man kann übrigens denselben Effekt ganz prinzipell erzielen, indem man etwas tut was eine grafische Änderung hervorruft (z.B. das Chipset ändern, ein Picture anzeigen, etc.) und dann direkt drauf einen Show-Screen-Befehl macht, mit irgendeinem schönen Effekt.
@R.F.: Wüsst ich auch gern.
Hätte vielleicht noch erwähnen sollen, dass das nur die Linuxnutzer betrifft xD
Jedenfalls hat Linux ja ne andere Zeichenkodierung (UTF-8) was Dateinamen angeht und auf Grund dieser Kodierung liegen die Umlaute auch an einer anderen Stelle als bei Windows (ISO-schießmichtot), weshalb dann meistens das passiert:
- statt der Umlaute steht dann irgendein undefiniertes Zeichen da und oft hängt der zusätzlich noch an den Dateinamen ein "ungültige Kodierung" dran. Jedenfalls kann das Spiel die Datei nicht finden und stürzt ab. War z.B. in der Allreise ziemlich heftig, weil dort laufend irgendwelche Dateien Umlaute enthielten. Wenn man die Dateien aber wieder umbenennt gehts.
Welchen Bug hat der Maker in Bezug auf das Shopsystem und Eventstartbedingungen?
Wenn es ein Event mit der Startbedingung Item gibt, und man in einem Shop das entsprechende Item kauft, wird das Event NICHT aktiviert. Erst, wenn der Maker die Startbedingungen neu überprüft (was u.a. bei einem Change Switch, Change Variable, F9-Menü, Change Item per Eventbefehl oder Change Timer passiert), wird es aktiviert.
Freirunde!
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.