Autor |
|
|
|
Administrator 464 Beiträge - Fingerwundschreiber
|
|
|
Gestern haben die KR`s mal ein paar Maps gespielt und wie das manchmal so ist, konnte eine Map, trotz lesen der Angaben unter I und intensiver Suche des Endzieles, leider nicht beenden werden. So etwas ist nicht wirklich schön, und darum habe ich mir die Map heute mal genauer angeschaut. Zu tage kam ein kleiner aber bedeutender Fehler. Darum habe ich mich dazu entschlossen diesen Tread aufzumachen, hier können Fehler in der WAC, die leider immer wieder passieren, gepostet werden.
Der Tread soll nicht dazu dienen, die Arbeit des jeweiligen Mappers zu schmälern, sondern Fehler die wirklich passiert sind zu veranschaulichen, und damit in Zukunft zu vermeiden.
KR-Nevada
|
Beitrag vom 06.07.2008 - 11:25 |
|
|
|
Administrator 464 Beiträge - Fingerwundschreiber
|
|
|
Dann mach ich auch gleich mal den Anfang:
Bei der Map AW2-Pwb-SunAndSteel gibt es einen Fehler in der WIN-Abfrage.
Die Map besteht am Ende aus zwei Flachbunkern mit einem Kelleraum darunter, in dem Kellerraum befinden sich 4 Weapons Crates, die zerstört werden müssen und Eddi, dieser ist der Böse Bube, und muss auch um die Ecke gebracht werden. Hier mal zwei Bilder:
Zu erkennen sind die 4 Weapons Crates und darunter Eddi
Das Ganze mal etwas größer:
Zu erkennen sind:
Weapons Crates 1 ID 66782
Weapons Crates 2 ID 66783
Weapons Crates 3 ID 66784
Weapons Crates 4 ID 66785
Eddi ID 1306
Hier der entsprechende WAC-Code aus der Map:
Zitat if never and ssndead(66782) then
add(v2,1)
endif
if never and ssndead(66783) then
add(v2,1)
endif
if never and ssndead(66784) then
add(v2,1)
endif
if never and ssndead(66785) then
add(v2,1)
endif
if never and eq(v2,4) and ssndead(1306) then
wave("jostmis3.wav")
text("Well Done")
endif
if never and chain(8) then
win(1)
endif
|
Die WAC sieht auf den ersten Blick richtig aus. Die Variable V2 wird bei Zerstörung der Weapons Craters um jeweils 1 erhöht, in den nächsten Zeilen des Scriptes wird dann der Variablenwert V2 nach 4 abgefragt, und der Tod von Eddi, stimmen die Bedingungen wird der Rest ausgeführt (wave, text) und nach weiteren 8 Sekunden ist die Map klar gewonnen.
Nun hat der Mapper aber eines nicht bedacht, das Verhalten der Spieler und Nova.
Da der Eingang zum Kellerraum mit einem Pflanzenvorhang verdeckt ist, haben wir natürlich erst einmal eine Handgranate hinein gekugelt. Es machte laut Bum und Aua, alles Leben war erloschen, auch das von Eddi. Danach wurden alle Weapons Crates gesprengt, ja und dann sollte die Map zu Ende sein, war sie aber nicht. Also wo steckt der Fehler?
Eddi und die Handgranate sind schuld.
Durch den Einsatz der Handgranate wurde Eddi natürlich ins Jenseits befördert, aber die Weapons Crates nicht, diese mussten gesprengt werden. Da nun aber tote Personen, also auch Eddi, nach ca. 15 Sekunden aus der Map entfernt werden, können sie für Abfragen in der WAC nicht mehr benutzt werden. Zwischen dem Ableben von Eddi und dem sprengen aller Weapons Crates vergingen mehr als 15 Sekunden, und damit konnte die Bedingung if never and eq(v2,4) and ssndead(1306) then nicht mehr wahr werden, und die ansonsten gelungene Map ließ sich nicht beenden.
Besser währe es gewesen auch Eddi eine eigene Erhöhung der Variablen V2 zu spendieren, und wenn dann V2= = 5 ist, ist die Welt in Ordnung.
Gerade bei der WIN-Abfrage werden oft soche Fehler gemacht, hier hilft nur logischen Denken und sich in das Verhalten der Spieler zu versetzen, denn die gehen oft eigene Wege.
KR-Nevada
Dieser Beitrag wurde 5 mal editiert, zuletzt von KR-Nevada am 06.07.2008 - 13:04.
|
Beitrag vom 06.07.2008 - 12:39 |
|
|
|
|
Zitat if never and eq(v2,4) and ssndead(1306) then wave("jostmis3.wav") text("Well Done") endif |
In diesem Fall würde es auch ausreichen, anstatt "ssndead(1306)" auch "not ssnalive(1306)" zunehmen.
Das funktioniert auch bei Objekte (Bots, vehicles), die nach dem Tod bzw. Zerstörung verschwinden.
Schöne Grüße,
Eraser
|
Beitrag vom 06.07.2008 - 14:36 |
|
|
|
Administrator 464 Beiträge - Fingerwundschreiber
|
|
|
Gestern haben wir mal eine Map im IC Europe Mod (Damord Mission 5) gespielt, die leider auch nicht enden wollte.
Hier mal das Briefing:
Also ein lustiger Abend, Bier suchen!
So sah das Bier aus:
Nachdem so einige böse Buben auf den Weg geschickt wurden und auch einige Bierchen gefunden wurden, kam von einem Mitspieler die Ansage: "Ich habe gerade den Commander erwischt"
Also sollte die Map ja nun mit dem Biertransport enden, tat sie aber nicht. Auf Nachfrage wurden die gefundene Bierchen mal addiert und siehe da, es waren nur drei. Also auf die Suche nach dem fehlenden Getränk. Dieses wurde dann auch gefunden. Leider auch kein Ende der Map. Schade!
Also habe ich die Map heute mal untersucht.
Als erstes wurde die WIN-Condition betrachtet:
Zitat if (elapse(30) ) and
(ssndead(1829) ) and
(ssndead(133129) ) and
(ssndead(133074) ) and
(ssndead(133184) ) and
(ssndead(133073) ) then //commanderwin
win(1)
endif |
Aha, der bekannte Fehler, der Commander wird um die Ecke gebracht, verschwindet nach 15 Sekunden und kann für die WIN-Abfrage nicht mehr genutzt werden. Da ich die Stelle, an der der Commander steht nicht kannte, habe ich mir diese im NILE angesehen. Das Gebäude in dem sich der Commander befindet, ist nicht zugänglich. Also wurde der erste Verdacht nicht erhärtet.
Zweiter Gedanke, wann wird das Gebäude zugänglich?
Da bin ich dann fündig geworden. Eine der Sperren hat die ID 132928, also in der WAC die entsperechende Stelle gesucht.
Zitat if never() and (ssndead(133184)
and ssndead(133184)
and ssndead(133074)
and ssndead(133073) ) then //openwalls
removeSSN(132949)
removeSSN(132950)
removeSSN(132951)
removeSSN(132952)
removeSSN(132953)
removeSSN(132954)
removeSSN(132955)
removeSSN(132928) |
In dem WAC-Auszug ist zu erkennen, dass (ssndead(133184) zweimal auftaucht. Ein Blick in NILE zeigte, dass die ID 133184 die Bierchen sind
Hier handelt es sich also um einen kleinen Schreibfehler, wenn die zweite ID 133184 gegen 133129 ersetzt wird, stimmt die Abfrage und das Gebäude mit dem Commander wird erst nach finde von allen vier Bierchen freigegeben. Der eigentliche Fehler liegt also nicht in der WIN-Abfrage, obwohl diese in diesem Fall auch ins leere läuft, sondern in einem kleinen Schreibfehler, wahrscheinlich entstanden durch kopieren von Skriptteilen.
KR-Nevada
Dieser Beitrag wurde 1 mal editiert, zuletzt von KR-Nevada am 06.09.2008 - 13:41.
|
Beitrag vom 06.09.2008 - 13:35 |
|
|
DWK-Aradia |
|
|
|
|
so mal ne frage: Wenn die 4 weapon crates vorher zerstört gewesen wäre und dann erst wäre "Eddi umgebracht worden wäre dann die map beenbar gewesen?
|
Beitrag vom 08.09.2008 - 15:26 |
|
|
|
Administrator 464 Beiträge - Fingerwundschreiber
|
|
|
Als Erstes müssen wir einmal klarstellen, das sich die Frage von DWK-Aradia auf die Map AW2-Pwb-SunAndSteel bezieht. Nun zur Antwort:
Sicher währe die Map dann beendet gewesen.
Aber frag dich doch mal selber, was du gemacht hättest?
Da ist ein Raum, in den du nicht schauen kannst und wenn du hinein schaust/gehst, schießt Eddi auf dich. Also zerstörst du erst die weapon crates und bringst danach Eddi um die Ecke? Könnte Mann/Frau schon machen. Könnte auch klappen. Für mich, zu viel könnte und 4 weapon crates mit einem Satchel? Wird in der Regel nicht klappen.
Also wird fast jeder Player als erstes Eddi einen "Guten Tag" wünschen (eine Kugel kugeln oder mit einem Satchel winken) sich dann in aller Ruhe um die weapon crates kümmern und wenn das länger wie 15 Sekunden dauert, kann die Map nicht beendet werden. Darum an dieser Stelle nochmals der Hinweis, versetzt euch in die Sicht des Players, denkt wie er denkt. Dies gilt besonders bei der WIN-Condition.
KR-Nevada
|
Beitrag vom 08.09.2008 - 17:39 |
|
|
DWK-Aradia |
|
|
|
|
Ja ne is ma eh klar ich wollte es nur so wissen naja wenn man die map net kent is es klar das vorher Eddi ins weisse Licht schaut, und man sich ja vergewissern muss das da keiner mehr drinnen ist wird das ganze länger dauern als 15 sec. Ausser man hätte die sec zahl höher gesetzt oder die varibale statt 4 auf 5 gesetzt. Aber ne herrausvorderung ist es alle mal bei ner map die man bastelt zu wissen welche wege die player gehen könnten.
LG
DWK-Aradia
|
Beitrag vom 09.09.2008 - 09:59 |
|
|
|
Administrator 464 Beiträge - Fingerwundschreiber
|
|
|
Zitat Original geschrieben von DWK-Aradia
Ausser man hätte die sec zahl höher gesetzt ..... |
Nur mal so zur Klarstellung, diese 15 Sekunden kannst du nicht höher setzen. Ein toter Bot wird nun mal nach ca. 15 Sekunden aus der Map entfernt und ist damit wirklich nicht mehr da. Darum gibt es die jeweilige SSN-Nummer auch nicht mehr und somit ist auch die Abfrage in der WAC sinnlos.
Aber kein Ding ohne Ausnahme:
In manchen Mods sind Bots vorhanden, die nicht entfernt werden, diese können natürlich genutzt werden. Also probieren.
KR-Nevada
|
Beitrag vom 09.09.2008 - 16:51 |
|
|
|
Administrator 202 Beiträge - Mitglied
|
|
|
Zu dem Thema Bots in der WAC mehrmals verwenden, auch wenn sie Tod sind werfe ich mal folgenden WAC-Befehl in diesen Thread:
RESET event!
Wohl auch ein Punkt für den Fortgeschrittenenkurs.
IKARUS~RSU~
|
Beitrag vom 09.09.2008 - 18:29 |
|
|
DWK-Aradia |
|
|
|
|
moin, ja also ich kenn mich da net aus was du da jetzt meinst ikarus aber wenn der kurs beginnt werd ich es sicher dann lernen,oder?! Schau eh schon jeden tag auf die hp wann es endlich soweit ist, bin eh schon gespannt drauf.
DWK-Aradia
|
Beitrag vom 10.09.2008 - 16:11 |
|