PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kleines Programmtechnisches Prob (im zusammenhang mit Variablen)



Junta
04.08.2004, 09:30
Erstma gNacht allerseits.
Ich bin momentan dabei ein kleines Script zu schreiben (Sinn und Zweck folgen, wenn es fertig ist...
...
...
und vollkommen reibungslos und bugfrei funzt...)
Ich hoffe, das das Problem nicht schon irgendwo in der RPG-MAker Bibel auf Seite 265 behandelt wurde...

Zum Problem.
An einer gewissen Stelle des Codes will ich die Werte zweier Variablen zusammenfassen lassen.
das sah in V1 des Scripts noch so aus:
-------------------Auszug aus code:--------------------
Ch. Variable[Ergebnisvariable] set[VariableMitZahl1]
Ch. Variable[Ergebnisvariable] +[VariableMitZahl2]
-----------------------Ende----------------------------

Das hatte es mir aber nicht gebracht.

...ich denke ich muss etwas weiter ausholen, als ich wollte.
Nehmen wir einfach mal an [Ergebnisvariable] muss, damit mein Script funzt, immer im positiven Bereich gesetzt werden und darf in einem bestimmten Fall 5 nicht übersteigen.
Das mit dem 5 nicht übersteigen ist kein Problem.

Nur, wenn [VariableMitZahl1] jetzt den Wert -2 hat und [Ergebnisvariable] den Wert annimmt ist sie halt im negativen bereich, was nicht soll.

Also hab ichs einfach mal mit
-------------------Auszug aus code:--------------------
Ch. Variable[Ergebnisvariable] +[VariableMitZahl1]
Ch. Variable[Ergebnisvariable] +[VariableMitZahl2]
-----------------------Ende----------------------------
versucht.

Nur dann donnerte [Ergebnisvariable] auf einmal auf 180 hoch obwohl [VariableMitZahl1] den Wert 0 und [VariableMitZahl2] den Wert 2 hatte...
In V1 hats ja geklappt nur dann hatte [Ergebnisvariable] als [VariableMitZahl1] den vert -3 und [VariableMitZahl2] den Wert 2 hatte halt den Wert -1

Eigendlich müsste es ja gehen, weil:
0 + 0 =0 (Zeile 1 des Scripts)
0 + 2 =2 (Zeile 2 des Scripts)
Es sei denn ich hab mal wieder was ausser acht gelassen...

BlueScope
04.08.2004, 09:51
Tjo, so wie du es bei deinem zweiten Versuch gemacht hast, müsste es eigentlich gehen ... Prob wäre natürlich, wenn du es in einem Cycle bzw. Loop oder einem sich wiederholenden PP gecodet hättest ... aber dann wäre die Variable logischerweise auf 999999 und nicht auf 180 ^^'

Andere Möglichkeit:
Variable 1 + Variable 2
Ereignisvariable + Variable 1

So funzt es totsicher, wenn das nicht geht, ist der Fehler irgendwo im Restcode ...

Kyuu
04.08.2004, 14:45
Wenn du bestimmte Werte nicht haben möchtest, bleibt nur der Weg über Fork Conditions.


<>If Var(0001:VariableMitZahl1)0(<)
<>Change Variable: Var(0001:VariableMitZahl1)= 0
<>
:End Case
<>

Btw: Vielleicht solltest du uns erstmal erklären, wofür diese Werte stehen, und wieso negative Werte möglich sind.

Junta
04.08.2004, 22:05
Hmmm...mal wieder mehr sagen als geplant...kommt man wohl nie drumrum...egal...a~lso:
Eigendlich fragt das Script (zum jetzigen standpunkt) die X/Y Koordinaten zweier Events auf der Karte ab. Man könnt ja nun denken ich hab die falschen Koordinaten(Pixelkoordinaten) speichern lassen. Dem ist aber nach eingänger Prüfung nicht so.

Am Anfang werden vom Event auf der Karte sotzusagen die Ursprungskoordinaten gespeichert [OldCoordX] und [OldCoordY].
dies passiert zu beginn einmal. Dann wird ein Common-Event im [Parallel-Process]-Modus gestartet, welches die aktuellen Kooridnaten in [CoordX] und [CoordY] speichert.
Dann wird in einer If/Then/Else-Case(wobei das Else nicht verwendet wird) abgefragt:
---------------------------------------------------------------------
If [CoordX](welche laufend aktualisiert wird) kleiner als [OdlCoordX] (welche zu beginn EINMAL gesetzt wurde) then Ch. Variable [RadX] -1
If [CoordY] kleiner als [OdlCoordY] then Ch. Variable [RadY] -1
If [CoordX] größer als [OdlCoordX] then Ch. Variable [RadX] +1
If [CoordY] größer als [OdlCoordY] then Ch. Variable [RadY] +1
---------------------------------------------------------------------
Innerhalb jeder If/Then/Else-Case wird jeweils die [OdlCoordX] oder die [OldCoordY] aktualisiert.
Danach Sollten [RadX] und [RadY] zusammengefasst und mit der Variable [Weg] und [Weg-] (welöche bei mir vom event auf der Karte auf 5 bzw. -5 gesetzt wurden) verglichen werden, so das der Max. Radius (Deswegen Rad.) 5 beträgt...
Aber mit 2 Change Variable + geht es nicht und mit der Methode von BlueScope leider auch nicht denn:
[RadX](-2)+[RadY](1) mach logischerweise (-1)
[GesRad](0) (diese darf Max 5 oder -5 betragen) + [RadX](-1) macht wasweißich... jdedenfalls nicht das, was rauskommen sollte, damits geht, nämlich in dem falle 3 oder -3

Kyuu
04.08.2004, 23:10
Wenn's dir bloß darum geht, das Minus in den "Radius" Variablen rauszubekommen, fragst du vor dem Zusammenfassen in einer "Fork Condition" ab, ob [RadX] und/oder [RadY] kleiner als Null sind. Wenn ja, multiplizierst du die jeweilige Variable mit "-1".
Beim Zusammenfassen dann: ([GesRad] set to [RadX]) + [RadY]
Dann musst du [GesRad] nicht mehr jedesmal auf Null setzen.

Wobei mir immernoch schleierhaft ist, was genau du mit diesem Skript erreichen willst. o_o

Btw: KoA? Knights of Apokalypse? Es wird langsam immer mehr von euch. ^_^

Junta
04.08.2004, 23:21
Ach ja, einfachste Mathematik also (dann is die 4 in Mathe wenigstens begründet ^^')
Und genau DAS will ich ja (noch) nicht verraten, da das Script erst in meinem Spiel zum einsatz kommt, und ich nicht will, dass es jemand "reproduziert", bevor es fertig ist (klingt dooof, solls aber geben).
Das Script allein kommt erst, wenn des RPG feritg ist (was sich aber dank der exzellente zusammenarbeit mit meinem Kollegen noch la~nge hinziehen kann...)
Ausserdem fehlen mir noch einige Sachen (Chipsets,etc.) die ich bis jetzt im Netz nicht finden konnte. Ich Versuche zwar momentan, die selber zu machen(*rip**rip*), was aber nicht unbedingt von Erfolg gekrönt ist...
EDIT: Ja, die PSO KoA's halt (die langsam am aussterben sind...)
Bin ja schon ne ganze weile hier im Forum...hab' nur lange nichts gepostet...

Naja, thx erstmal...ich hoffe es klappt (es sei denn ich mach wida wat falsch^^') *probier**hoff*