PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sks



Ranarion
31.05.2005, 16:58
So, nahc dem ich einige Seiten durchstöbert, die Suchfunktion benutzt und Wein/Lach-Krämpfe bei Skripts bekommen habe frage ich hier:
Wo gibt es ein gutes Tutorial oder ein verständliches Skript, wie man sich ein rundenbasiertes KS machen kann. Alle anderen, die ich gefunden habe waren entweder lächerlich, für nur einen Helden oder ATB´s... :(

Niji-chan
31.05.2005, 17:26
Wie wärs denn mit Serges KS oder dem Forgotten EBook (s.Signatur)?

übelster Held
31.05.2005, 18:31
@ Niji
er will ein rundenbasiertes KS
serges ks ist ein ATB system...

@ Ranarion
is doch ganz einfach:
lässt die helden alle befehle eingeben, und
danach musst du nur die Agilitätswerte der helden u Monster vergleichen...
der mit dem höchten greif zu erst an, dann der zweite, der dritte und so weiter und so weiter...

üH

Ranarion
31.05.2005, 20:54
Wenn ich es so einfach fände würde ich ja hier nicht nach nem Tutorial fragen oder? :rolleyes:

Oburi
31.05.2005, 21:37
Mhh.. Programmier doch eins nach dem E-Book.. Der Code muss doch nur geringfügig verändert werden um aus dem ATB-Kas ein rundenbasiertes KS zu machen....
MfG, Ouri

Ranarion
31.05.2005, 22:09
Und wie? Ich kann mir das nicht vorstellen...

Phönix Tear
01.06.2005, 14:59
Hmm, Codes so zu kombinieren könnte allerdings schwierig werden.
Das Prinzip ist aber recht einfach zu verdeutlichen:
Du benutzt im Endeffekt einfach statt der ATB-Leiste nur eine Variable. Normalerweise addiert man immer den Agility-Wert eines Helden (oder einen Teil davon) zu einer anderen Variable die dann irgendwann einen Wert erreicht und der betroffene Held ist drann. Das kann man hier einfach weglassen. So auf die Schnelle (hab das noch nie gemacht) fällt mir da nur eine Möglichkeit ein:
Du machst 3 Variablen (entsprechend der Gegner- und Heldenzahl). Bei mir gibt es jetzt mal nur einen Gegner und zwei Helden. Dann kommen ineinander verschachtelte Forks, die abfragen welcher der höchste ist:

<>Fork: Variable 1 "Held 1 Agility" > "Held 2 Agility"
<><>Fork: Variable 1 "Held 1 Agility" > "Gegner 1 Agility"
<><>Call Event: "Held 1 drann"
<><>Else:
<><><>Fork: Variable 2 "Held 2 Agility" > "Gegner 1 Agility"
<><><>Call Event: "Held 2 drann"
<><><>Else:
<><><>Call Event: "Gegner 1 drann"
<>Else:
<>Fork: Variable 2 "Held 2 Agility" > "Gegner 1 Agility"
<><>Call Event: "Held 2 drann"
<><>Else:
<><>Call Event: "Gegner 1 drann"
Natürlich muss dann nachdem ein Gegner drann war jeweils der Switch "Held X war drann", bzw. "Gegner X war drann" angeschaltet werden, der dann immer noch vor der Abfrage abgefragt wird, damit nicht die ganze Zeit der gleiche Held drann ist, also:

>Fork: Variable 1 "Held 1 Agility" > "Held 2 Agility"
>>Fork: Variable 1 "Held 1 Agility" > "Gegner 1 Agility"
>>>Fork: Switch 1 "Held 1 war drann" - OFF

>>>Change Switch: 1 "Held 1 war drann" - ON
>>>Call Event: "Held 1 drann"

>>>Else:
>>>>Goto Lable 1

>>>Else:
>>>!Lable 1!
>>>Fork: Variable 2 "Held 2 Agility" > "Gegner 1 Agility"
>>>>Fork: Switch: "Held 2 war drann" - OFF

>>>>Change Switch: 2 "Held 2 war drann" - ON
>>>>Call Event: "Held 2 drann"

>>>>Else:
>>>>>Goto Lable 2

>>>>Else:
>>>>>!Lable 2!
>>>>>Change Switch 3 "Gegner 1 war drann" - ON
>>>>>Call Event: "Gegner 1 drann"

>Else:
>>Fork: Variable 2 "Held 2 Agility" > "Gegner 1 Agility"
>>>Fork: Switch 2 "Held 2 war drann" - OFF

>>>Change Switch: 2 "Held 2 war drann" - ON
>>>Call Event: "Held 2 drann"

>>>Else:

>>>>Change Switch: "Gegner 1 war drann" - ON
>>>>Call Event: "Gegner 1 drann"
Und zu guter letzt damit das ganze auch klappt:

>Fork: Switch 1 "Held 1 war drann" - ON
>>Fork: Switch 2 "Held 2 war drann" - ON
>>>Fork: Switch 3 "Gegner 1 war drann" - ON

>>>>Change Switch: "Held 1 war drann" - OFF
>>>>Change Switch: "Held 2 war drann" - OFF
>>>>Change Switch: "Gegner 1 war drann" - OFF
So, ich hoffe du verstehst was ich damit meine ^^°
Wenn du oben bei den ganzen Forks ein bisschen versuchts das ganze nachzuvollziehen sollte das schon klappen ;)

mfg
Phönix Tear

Ranarion
01.06.2005, 18:16
Gibt´s da nicht ein Script?
@üH: Das ist kein Script, aber schön verwirrend^^

swordman
02.06.2005, 15:40
hrrmm....es gibt auch im Forgotten E-book ein tut zu einem SKS, aber scripts hab ich bis jetzt eher weniger gefunden.
Such doch mal z.b. auf www.rpg2000.4players.de unter Script und dann unter K oder S.

Ranarion
02.06.2005, 15:47
Das Tut im E-Book ist ein ATB.
Im Quartier gibts auch nur ATB´s, aber hauptsächlich AKS.
Du solltest genauer lesen... :rolleyes:

Lachsen
02.06.2005, 19:24
Rundenbasiertes KS?

Prinzipiell besteht eine Runde immer aus 2 Teilen.
1. Die Attacken bestimmung (von allen Kampfteilnehmern und Gegnern)
2. Die Bestimmung der Reihenfolge der Attacken und gleichzeitig ihre Ausführung.

Für 1:
Hier kannst du dich ziemlich an den KS-Kursen wie dem von Serge richten, nur eines ist wichtig: Du musst alles Ergebnisse in Variablen einspeichern.
Also brauchst du mindestens folgende Variablen:
Held1-Aktion
Held2-Aktion
Held3-Aktion
...
Gegner1-Aktion
Gegner2-Aktion
...
usw.

In dese Variablen speicherst du die AKTION-ID der jeweils gewählten Aktion.
Bei Helden wird die Aktion (meistens) per Menu-Skript gewählt, bei Gegnern über eine Art "KI" (bzw per Zufall - siehe andere KS Kurse dafür...).

Und dann noch diese:
Held1-Ziel
Held2-Ziel
....
Gegner1-Ziel
usw.

Hier musst du das Ziel der Aktion einspeichern. Bei Helden wieder durch Auwahl bestimmt, bei Gegnern durch eine KI (oder Zufall).

Zu 2.:
Um die Richtige Reihenfolge rauszufinden würde ich so vorgehen:
Zuerst speicherst du die Agilitätswerte ALLER Kampfteilnehmer in Temporäre Variablen (also in neue Variablen). Diese Variablen wirst du in folgener Rechnung für die GEschwindigkeiten der Kampfteilnehmer verwenden.

Und nun die ERklärung wie man auf einfache Art und Weise den HÖCHSTEN WERT bestimmt (da können auch ein paar Vorposter noch was von lernen):

Mann verwendet eine Variable Namen's "Top-Wert" und eine Variable "Top-Nummer"

Beschreibung der Variablen: Top-Wert hat immer den momentan größen Vergleichswert eingespeichert, während Top-Nummer die Nummer des Kampfteilnehmers (z.B. 1=Held1, 2=Held2 3=Held3 4=Gegner1 5=Gegner2 usw.) mit dem momentan größten Vergleichwertes.

Das Skript sieht nun so aus:
Top-Wert=0
Top-Nummer=0

If Held1-Agi>Top-Wert then
Top-Wert=Held1-Agi
Top-Nummer=1
End Case.

If Held2-Agi>Top-Wert then
Top-Wert=Held2-Agi
Top-Nummer=2
End Case.

....

If Gegner1-Agi>Top Wert then
Top Wert=Gegner1-Agi
Top-Nummer=4
End Case.

....
usw.

Das ganze muss mit allen möglichen Kampfteilnehmern durchgezogen werden.
(wichtig: In den Forks muss BIGGER gewählt werden, NICHT above)



Wenn das Skript nun einmal durchlaufen wurde, hat man in der Variable "Top-Nummer" die Nummer des Kampfteilnehmers, der der schnellste ist, also jetzt am Zug ist.

Mit diesem Kampfteilnehmer wird nun der Zug ausgeführt.
Das heisst: Du musst auf die Aktion- und Ziel-Variable des Kampfteilnehmers zugreifen. Beispiel:
Top-Nummer=1 -> Aktion-ID=Held1-Aktion und Ziel-ID=Held1-Ziel
oder
Top-Nummer=3 -> Aktion-ID=Held3-Aktion und Ziel-ID=Held3-Ziel
oder
Top-Nummer=5 -> Aktion-ID=Gegner2-Aktion und Ziel-ID=Gegner2-Ziel
(wenn es nur 3 Helden gibt..)
usw.
Anhand von "Top-Nummer" weisst du, welcher Kampfteilnehmer seine Aktion hat, anhand der "Aktion-ID" weisst du, welche Attacke kommen muss (SChwertschlag oder Feuerzauber, oder Heilitem) und schließlich weisst du anhand der "Ziel-ID" welches Ziel, bzw. welche Ziele angegriffen werden.


Wichtig: Hat der Charakter seinen Zug ausgeführt, senke seinen Agilitäts-Wert auf 0, undzwar den in der temporären Variable! (deshalb das umspeichern, die Agilitäts-Werte sollen ja nicht verloren gehen)

Und jetzt wiederholst du das ganze (ab der Stelle wo die Schrift Rot ist). Du durchgehst wieder die oben beschrieben Rechnung. Da der Kampfteilnehmer der vorher der schnellste war jetzt einen Agi-Wert von 0 hat, wird der nächst schnellere dran kommen.

Das ganze machst du solange, bis am Ende der Rechnung die Variable Top-Nummer den Wert 0 hat. Dann ist die Runde vorbei.

Was noch wichtig ist: Sollte ein Kampfteilnehmer nach einer Aktion sterben musst du den Agi-Wert der temporären Variable auf 0 setzten (genau wie in allen anderen Fällen, wenn seine Aktion irgendwie abgebrochen wird.)

Ich denke das ist das wichtigste was du zu einem Rundenbasierten-KS wissen musst.

Ich hoffe ich konnte helfen.

C ya

Lachsen

Bauzi
02.06.2005, 21:48
Gibt´s da nicht ein Script?
@üH: Das ist kein Script, aber schön verwirrend^^
Das mit dem SKS ist so eine Sache entweder man kennt sich aus oder nicht, wenn nicht:
-Jemanden holen der eines für dich macht
-Finger davon lassen und dafür gute Battleanimationen einbauen.

Was ich dir wirklich nur als Ratschlag (zum xten mal hier) geben kann ist das E-book. Bau es nach,... Dann gibst du es jemanden, der es umbaut, oder du denkst beim basteln gleich mit und umgehst so gut es geht das ATB durch umschreiben.

Mehr kann man da nicht tun.

Ranarion
02.06.2005, 21:54
@Lachsen: Danke, werde es Montag mal ausprobieren...wenn ich es raffe^^
@Bauzi:

Jemanden holen der eines für dich macht Lol, ich glaube nicht, dass sich jemand die Mühe für nen Creditseintrag macht...

Finger davon lassen und dafür gute Battleanimationen einbauen. Werd ich machen müssen, wenn ich Lachsens Post nicht umsetzen kann. Ausser es geschieht ein Wunder und jemand macht mir eins^^

Was ich dir wirklich nur als Ratschlag (zum xten mal hier) geben kann ist das E-book. Bau es nach,..
Ich habe es nachgebaut: Da ist irgendwas falsch...irgendwas funzt net so, wie es soll...

Dann gibst du es jemanden, der es umbaut, oder du denkst beim basteln gleich mit und umgehst so gut es geht das ATB durch umschreiben.
Wenn ich das so gut könnte, hätte ich diesen Thread nicht aufgemacht... :rolleyes:

übelster Held
02.06.2005, 22:50
...Und nun die ERklärung wie man auf einfache Art und Weise den HÖCHSTEN WERT bestimmt (da können auch ein paar Vorposter noch was von lernen)...

schau mal nach oben laxy...XD

@ranarion:
lachsen schreibt zwar, dass man alle aktionen vorher speichern soll
aber ich glaube niemand reißt dir den kopf ab, wenn du die
aktionen der gegner erst bestimmt, wenn sie auch dran sind...
(sieht ja sowieso keiner...)
so kann man, mit der richtigen gegner Ki das spiel auch schön schwer machen... (spieler muss im vorraus denken, gegner nicht...)

üH

Bauzi
03.06.2005, 08:47
Lol, ich glaube nicht, dass sich jemand die Mühe für nen Creditseintrag macht...
Ich wäre so einer wenn ich Zeit hätte! Das mit dem E-book funzt nicht :\ Das ist allerdings sehr schlecht, weil ich denke mal es ist schwer den Fehler zu finden...

naja such dir am besten gleich ein Teammitglied oder einen Partner, der dir gleich in deinem Projekt in Sachen Technik hilft und dir ein SKS macht.

Phönix Tear
03.06.2005, 15:08
Hey, thx Lachsen. Werds mir merken ;)

@üH

schau mal nach oben laxy...XD
*hust*
Nun ja. Ich hab nach oben geschaut... Gefunden hab ich nicht viel. Wenn ich deinen Post mit dem von Lachsen vergleiche :rolleyes:
Du sagst lediglich das er den höchsten Agility-Wert ermitteln soll, aber nicht wie und das war ja schließlich seine Frage...
Und überleg mal selber. Womit kann Ranarion wohl mehr anfangen? ;)


@Ranarion:
Kannst du die unwissenden mal aufklären, was du bereits gemacht hast oder woran du gerade arbeitest? Manchmal ist das sehr hilfreich, sich selbst zu präsentieren wenn man Jemanden sucht der mit einem arbeitet ;)
Ich selbst hab zwar momentan keine Zeit zum machen eines KS, aber vielleicht findet sich ja noch jemand anderes... (nochmal Sry Sekar T_T)

übelster Held
03.06.2005, 15:53
@heulender brennender vogel :) :
ich habe ja meinen post nach deinen geschrieben...der den
code für das ordnen beinhaltete, meiner war halt nurn bissel länger...
(hab die reihenfolge wie du im vorausberechnet...)
und den post hab ich eiskalt gelöscht... jetzt wirst du sicher
auch den witzt erkennen können...

Lachsen
04.06.2005, 10:40
@üH Ich hab mir zugegeben deinen Code nicht besonders genau durchgelesen (und den Link zum Skript auch nicht geöffnet)
Auf dem ersten Blick sah es dennoch recht verwirrend aus, von daher dachte ich wäre es doch angebracht nochmal meinen Senf dazu zu geben.

Aber wo ist dein Beitrag jetzt?!

Irgendwie vermisse ich ihn, er steht nichtmehr dort oO
Würde ja noch gerne darauf eingehen, aber wenn er weg ist geht das schlecht.

(hast du ihn gelöscht oder sowas?)

Edit: Hab wieder nicht genau genug gelesen.
Gelöscht also? So gesehen hast du kapituliert und eingesehen, das du aus meinen Skript doch etwas lernen kannst :P

Wenn nicht bist du Feige und nimmst mir die Möglichkeit zu Argumentieren, wieso es so ist. v_v

wie auch immer...

Und noch was zu dem Aktionen bestimmen der Gegner, erst wenn sie dran sind:
Ich halte es (zumindest seit einiger Zeit) generell für angemessener, alle Rechnungen, die nicht direkt mit der Grafischen Darstellung der Aktionen zu tun haben, von dieser zu trennen.

Das heisst: Es ist besser, wenn man direkt nach der Eingabe zuerst einmal alle Aktionen parat hat, dann aber darüber hinaus auch gleich den Ablauf dieser Runde einmal "gedanklich" durchgeht und dabei schonmal jeden Schaden vorberechnet und abspeichert und dann bei der Ausführung lediglich auf die eingespeicherten Werte zugreift, wo sonst viel gerechnet wird.

Vorallem wenn die Berechnung des Schadens aufwändig ist (was sein kann, je nachdem wieviele Features das KS hat hinsicht Schadenreduzierung und -erhöhung) kann das den Rechner gut entlasten.

Ausserdem hat es immer nen Vorteil noch vor der Ausführung der Runde bescheit zu wissen, wie es aus geht.

Aber mal nebenbei... sowas ist etwas schwerer durchzuführen und weniger was für Leute die sich nicht wirklich in diese Materie reinversetzen können...

Dennoch, das vorherige Einspeichern der Aktionen von Gegnern ist der erste Schritt in diese Richtung und gar nicht mal schwer zu machen.
Außerdem macht es die Struktur des Kampfsystems einfach schöner und einheitlicher weil man genau aufteilen kann:
1. Attackenbestimmung
2. Attackenausführung

Und denkt immer daran: 5000 Variablen sind SEHR viel, scheut euch nicht einige raus zu nehmen um viel einzuspeichern.

C ya

Lachsen

übelster Held
04.06.2005, 12:56
ob du meinen beitrag stark vermisst bezweifle ich jetzt mal stark...XD
wie kannst du überhaubt meinen code für verwirrend bezeichnen wenn
du nichtmal auf den link geklickerst hast??? hm... oder kannst du hellsehen??? XD
ach... jetzt weiß ich was du als "code" hieltest, du meinst doch sicher
das ganze zeugs was unter den link stadt... das war nur die erklärung
der variablen und welche ich eingesetzt hab...
aber für dich hab ich nochmal den code ausgekramert...(hat nämlich
schon mal einer gefragt und da hab ich mal schnell das script geschrieben...)


probier mal das:
bild (http://img117.echo.cx/img117/8166/b12fv.png)

is egal wie groß die agillitätswerte sind...
gibt zwar in deinen fall ne viel einfachere methode,
aber wer weiß ob du nicht vielleicht doch noch
die aggilitätswerte verändern willst...
zur erklärung:
die variable "held x agi" ist der agillitätswert des jew helden/monsters

gespeichert werden die ergebnisse dann in der variable "angreifer x"
du musst halt der reihe nach fragen welchen wert angreifer 1
hat : wenn die variable den wert 1 hat, greift held 1 an
hat sie den wert 2 dann greift der Held 2 an
ab den wert 5 greifen dann die monster an...
danach musst du den wert der variable angreifer 2 abfragen...usw usw...

ne kapitulation wars net, eher ne revolution...XD
lehrnen kann ich vieleicht was von dir, aber nicht von son bissel script...
(okee, okee, habs echt nicht gesehen, dass man die geschw. dan null
setzen kann... aber kann ja mal in der eile des geschäfts vorkommen...)

ich hab nur eingesehen, dass dein code halt viel verständlicher ist als meiner... aber ob er auch besser ist, weiß man nicht...

5000 variabeln sind wirklich viel... ab erstmal 800 bei meinen ks verscheuert... (davon jedoch 200 für die itemeinspeisung... )

also mal zu den schwächen meines codes:
- lang...
- für anfänger etwas undurchsichtlich und befremdend...
- im falle einer geschwindigkeitsveränderung muss man den code nocheinmal
durchlaufen lassen und zusätzlich bei der überprüfung immer von angreifer 1 anfangen und zusätzlich fragen ob der held schon dran war...
klingt jetzt kompliziert ist es auch...XD

jetzt zu deinen cods schwächen:
- bei einen fall der geschwindigkeitsänderzung kann man deinen code in die
tonne treten: XD
nehmen wir mal an monster 3 ist als erster dran... am ende wird die
tempgeschw. auf null gesetzt
danach hero 2 der ein monster angreift...
nach ihn kommt hero 3 dran, der
einen geschwindigkeits zauber einsetzt der die geschw aller helden um
20 erhöht...
und hier ist der hacken... man könnte jetzt die ganzen betroffenen agilitätswerte um 20 erhöhen, müsste dann aber auch die
temporären agilitätswerte angleichen... aber da ja schon bei einen
helden die temp agi werte auf null sind, müsst man seine tempwerte auslassen... denn sonst kommt der held am ende des kampfes noch einmal
dran, da der code ja erst aufhört wenn der höchste wert null ist...
mann könnte sichs aber auch viel einfacher machen und das einbauen
auf was du bei deinen code verzichtest hast: switches wer schon drann war
und wer noch nicht...

das müsste man aber nur machen, wenn man sie um einen festen wert
erhöht... wenn man sie prozentual erhöht muss man einfach
die agilitätswerte und alle temp agi werte prozentual erhöhen,
denn null mal 5 durch 100 is ja immernoch null.
man müsst jedoch aufpassen dass man nicht alle temp agi werte nach dem
erhöhen aktualisiert, da ja dann der held, der schon dran war wieder drankommt...

hoffe du konntest mir folgen...

üH

Ranarion
04.06.2005, 16:32
Ich lach mich schlapp: Zwei Leute sagen, dass sie so etwas für einen Creditseintrag machen würden, haben aber keine Zeit, können mir demnach viel erzählen...

Das mit der Geschwindigkeitsänderung ist für mich ein großes Problem, da der erste Chara, den man hat schon die Geschwindigkeit erhöht bzw. senkt...


Kannst du die unwissenden mal aufklären, was du bereits gemacht hast oder woran du gerade arbeitest? Manchmal ist das sehr hilfreich, sich selbst zu präsentieren wenn man Jemanden sucht der mit einem arbeitet
Klar kann ich das, aber ob ich das mache... :D
Das hier ist kein Vorstellungsthread, demnach hielt/halte ich es nicht für nötig...
Falls wirklich jemand Interesse daran hat soll er mir eine PN schicken, jedoch bitte nicht nur aus Neugier ;)

@üH und Lachsen: Hört auf euch zu streite, das ist ja schlimm :D

Lachsen
04.06.2005, 19:49
jetzt zu deinen cods schwächen:
- bei einen fall der geschwindigkeitsänderzung kann man deinen code in die
tonne treten: XD
nehmen wir mal an monster 3 ist als erster dran... am ende wird die
tempgeschw. auf null gesetzt
danach hero 2 der ein monster angreift...
nach ihn kommt hero 3 dran, der
einen geschwindigkeits zauber einsetzt der die geschw aller helden um
20 erhöht...
und hier ist der hacken... man könnte jetzt die ganzen betroffenen agilitätswerte um 20 erhöhen, müsste dann aber auch die
temporären agilitätswerte angleichen... aber da ja schon bei einen
helden die temp agi werte auf null sind, müsst man seine tempwerte auslassen... denn sonst kommt der held am ende des kampfes noch einmal
dran, da der code ja erst aufhört wenn der höchste wert null ist...
mann könnte sichs aber auch viel einfacher machen und das einbauen
auf was du bei deinen code verzichtest hast: switches wer schon drann war
und wer noch nicht...

Wo ist da genau das Problem? Ich sehe es nicht.
Man muss nur eine zusätzliche Fork bei dem Skript hinsetzen, dass die Geschwindigkeit eines Kampfteilnehmers ändert. Das Skript ist einfach nur:
1. Aktualisiere Geschwindigkeit von Kampfteilnehmer
2. Wenn Temporäre Geschwindigkeit von Kampfteilnehmer NICHT 0 ist: Aktualisiere AUCH die Temporäre Geschwindigkeit.

Natürlich macht es speziell dieses Skript etwas aufwändiger für den Rechner, aber stellen wir mal deine Methode hinsichtlich des Rechnen-Aufwandes gegebenüber:
Wenn man Switches verwendet, werden diese Switches IMMER in der Berechnung der Aktions-Reihenfolge abgefragt. Das heisst grob gesehen (zumindest im Schlimmsten) DOPPELTEN Umfang an Fork-Konditions.
Nun bedenke das dieses Skript JEDE RUNDE kommt, undzwar für jeden Kampfteilnehmer EINMAL.

Bei meiner Methode ist das Skript, dass die Geschwindigkeit eines Kampfteilnehmer während der laufenen Runde ändert, etwas rechenaufwändiger (um eine Fork, bzw. 4 Forks, wenn es 4 Kampfteilnehmer sind), aber wie oft kommt dieses Skript schon?
Bestimmt nicht jede Runde mehrmals, weshalb es seltener kommt als das Reihenfolge-Berechnen-Skript. :P

Edit: Ansonsten ist, soweit ich das sehe, eher dein Skript umständlich wenn es darum geht, das während des Kampfes eine Geschwindigkeit verändert wird.
Bei dir muss man nämlich in so einer Situation alles vorberechnete komplett hinschmeissen. Alles was man zu den Kampfteilnehmern berechnet hat, die noch nicht dran waren, wird verschmissen und neu errechnet.

Bei mir wiederum muss die Rechnen zur Reihenfolgenbestimmung immer nur einmal vor jeder ausgeführten Aktion durchzogen werden. Wenn die Geschwindigkeit verändert wird, wird nicht mehr gerechnet, als sonst.
Alles was man tun muss, ist zu beachten, dass, wenn die temporäre Geschwindikeit eines Kampfteilnehmers 0 ist, sie auch wirklich 0 bleibt und alles müsste richtig laufen.

Aber ansonsten muss ich mich bei dir entschuldigen:

Dein Skript ist wirklich in etwa wie das, was ich hier beschrieben habe.
Toll finde ich sogar, dass du Variable-Pointer-Verwendet hast (V[V[x]]=y), auf sowas bin ich gar nicht eingegangen.

Und hättest du den Beitrag nicht gelöscht hätte ich mich schon in meinem vorherigen Post entschuldigt o_ô

Dennoch bringen die Switches als Abfrage nur Nachteile. So kann man mein Skript sehr stark komprimieren, indem man eine Schleife mit einem Variablen-Pointer macht, die so oft durchlaufen wird, wie es Kampfteilnehmer gibt. Angenommen die Temporären Speedwerte würden auf den Variable 51-60 liegen, dann könnte man es einfach so regeln:

VPointer=50
Top-Wert=0
Top-Nummer=0
Label 1
VPointer=VPointer+1
Speed=V[VPointer]
If Speed > Top-Wert
Top-Wert=Speed
Top-Nummer=VPointer
Top-Nummer=Top-Nummer-50
End Case
If VPointer < 60
Goto Label 1
End Case

Sowas geht leider in keinem Fall mit Switches, weil man Switches zwar per VPointer verändern, sie aber leider nicht auf diese Art abfragen kann, weil man Switchwerte generell nicht auf so einfache Art übertragen kann.

Wie auch immer, mein Kommentar in meinem ersten Beitrag war etwas unüberlegt, tut mird Leid deswegen.

Wir sollten am besten das Kriegsbeil bekraben oO

C ya

Lachsen

Edit: Ups, ja, hab mich verschrieben, richtig XD
BEi dern Fork muss Top-Wert stehen, nicht Top-Nummer

übelster Held
05.06.2005, 00:47
@üH und Lachsen: Hört auf euch zu streite, das ist ja schlimm :D

du kannst uns doch bei unserer Fehde nicht stören...XD


Aber ansonsten muss ich mich bei dir entschuldigen:
warum??? wenn ich es dir übelgenommen hätte dann hätte ich ja folgendes
geschrieben:
eh du Wi*er was willst du von mir???? wenn du probleme hast, dann gehen
wir mal kurz vor die tür...XDXDXD

aber ehrlich gesagt versteh ich dein code nicht...

also 1. is klar... vpointer wird 50 gesetzt...
2.und 3. auch...top wert und nummer werden null gesetzt...
dann kommtn label für die schleife...
der vpointer wird um eins erhöht...
und die vari speed erhält den wert, den die varible 51 (im ersten durchgang)
enthält... sagen wir mal 20...
doch jetzt wills ich nimmer begreifen (okee es ist 00:34):
du fragst ob die vari speed mit 20 äuglein größer ist als top nummer mit null
äuglein... da sag ich mal ja...
dann wird in unserem beispiel die vari topwert 20 gesetzt
und topnummer zu vpointer - 50 = 1
so da v pointer kleiner 60 werden wir zum 1. label gebeamt...
vpointer jetzt auf 52
und speed auf meinetwegen 17 gesetzt...
und jetzt wird gefragt ob 17 (speed) größer als 1 (topnummer) ist...
und ja das ist sie...

bestimmt sollte der code sohier heißen:

VPointer set 50
TopWert set 0
TopNummer set 0
Label 1
VPointer=VPointer+1
Speed=V[VPointer]
If Speed > Topwert
Top-Wert set Speed
Top-Nummer=VPointer
Top-Nummer=Top-Nummer-50
End Case
If VPointer < 60
Goto Label 1
End Case

ah... ich merks grad beim umschreiben deines scriptes... du hast dich nur verschrieben...der fork soll so hier heißen: wenn speed größer top wert...


Wie auch immer, mein Kommentar in meinem ersten Beitrag war etwas unüberlegt, tut mird Leid deswegen.
war dir gar net böse...


Wir sollten am besten das Kriegsbeil bekraben oO
ach, wir haben doch die ganze zeit nur friedenspfeife gekifft...XD


Sowas geht leider in keinem Fall mit Switches, weil man Switches zwar per VPointer verändern, sie aber leider nicht auf diese Art abfragen kann...
das find ich auch bescheiden, bei den forks in variablen angelegenheiten
kann man ja zur not die pointer vorher in nor vari speichern aber die switches...

mfg
üH

DR_Zeph
05.06.2005, 01:04
das ganze wurd mal von KD in einem schönem Skript festgehalten, zu finden hier

http://members.lycos.co.uk/detektivshinichikudo/OrdnungsScript/