World of Gothic Archiv
> NWN-Hilfe Gasthaus-Script |
|
25.08.2002, 21:55 | #1 | ||
Corky Beiträge: 5 |
Gasthaus-Script
Hiho, ich habe leider ein kleines Problem mit einem "Zimmervermietungs-Script"! Und zwar soll der Vermieter nur einen bestimmten Schlüssel rausgeben und auch nur bei entsprechender Goldmenge. Mein Script: void main() { object oPC = GetPCSpeaker(); object oSchluessel = GetObjectByTag("schluesselkoenig"); string sDialogResRef; int bPrivateConversation; int nPCGold = GetGold(oPC); string sName; while (GetIsObjectValid(oSchluessel) == TRUE || sName == "Koenig") { oSchluessel = GetObjectByTag("schluesselkoenig"); sName = GetName(oSchluessel); } if (GetIsObjectValid(oSchluessel) == FALSE) { ActionStartConversation(oPC, sDialogResRef=("kath_inn_nein"), bPrivateConversation=TRUE); } if ((sName == "Koenig")&&(nPCGold>100)) { ActionGiveItem(oSchluessel,oPC); TakeGoldFromCreature(100, oPC); ActionStartConversation(oPC, sDialogResRef=("kath_inn_ja"), bPrivateConversation=TRUE); } } Leider bekomme ich im Spiel (nicht im Compiler, da ist alles Ok) die Fehlermeldung: OID: 80000178, Tag: elmor_inn, Fehler: zu viele Anweisungen Was kann das sein??? Tschö Corky |
||
25.08.2002, 23:08 | #2 | ||
Rhaegar Beiträge: 296 |
Uff, da liegt einiges im Argen. Also erstmal: Das zu viele Anweisungen Problem heisst schlicht und einfach:Endlosschleife! Ich kommentier' mal ein paar Stellen die mir aufgefallen sind: code\: Aber selbst wenn du die erwähnten Stellen korrigierst kann ich mit ziemlicher Sicherheit sagen, dass es nicht machen wird, was es machen soll.Du skriptest noch nicht allzulange,oder *nicht als Beleidigung verstehen ;)* ? Deshalb mein Angebot: Du erklärst mir was du genau von dem Skript willst. Also: Wie wird bestimmt welchen Schlüssel der Mensch ausgibt? Wenn du das machst hast du spätestens eine Stunde später ein fertiges Script, in dem ich auch erkläre, "warum" ich "was" mache.(Wenn du nicht gerade postest während ich schlafe ;) ) Je mehr du ins Detail erklärst was du willst, desto besser. Ach ja: Mein erstes Tavernenskript hatte fast exakt dieselben Probleme wie deins, also Kopf hoch. Das wird schon :) ! Edit: oops, es lebe der Zeilenumbruch... ___________________________ Verliebt in den UserDefined Event ^^ Überzeugter Episode 2 Hasser[/font] |
||
26.08.2002, 12:42 | #3 | ||
Corky Beiträge: 5 |
Erstmal Danke für die Hilfe! Stimmt, ich mach das noch nicht lange. Aber wenn man es nicht selber probiert dann lernt man es auch nie! ;) Hier meine genaue Vorstellung: In dem Gasthaus gibt es vier unterschiedlich ausgestattete und auch vom Preis her variirende Zimmer. Der Gastwirt fragt nun den PC welchen der vier Räume er denn mieten möchte. Hat der PC sich entschieden bezahlt der den Preis des Zimmers und erhält den richtigen Schlüssel der natürlich nur bei diesem Zimmer funktioniert (hab schon vier Schlüssel erstellt mit unterschiedlichem Tag und auch die Zimmer sind angeschlossen und mit unterschiedlichem Tag versehen)! Natürlich muss der PC auch über die entsprechende Goldmenge verfügen. So, ich hoffe das war verständlich erklärt... |
||
26.08.2002, 13:45 | #4 | ||
Rhaegar Beiträge: 296 |
Ok.Einfachste Möglichkeit: Du baust in den Dialog mit dem Dialogeditor vom Prinzip her so einen Dialogbaum ein: code\: Natürlich kann der Spieler nun auch sagen er habe nicht soviel, obwohl er genug hat, oder "Hier bitte!" obwohl er nicht genug hat- Deswegen brauchen wir die folgenden zwei Skripts, die wir in den jeweiligen "Text erscheint wenn..."-Feldern aufrufen: (*): code\: Das ist im wesentlichen einfach das Standardskript, das kommt, wenn man bei "Text erscheint wenn..." auf bearbeiten klickt, nur mit den zusätzlich nötigen Variablendeklarationen und als Bedingung eben (nPCGold>=nRoomPrice), was nur true liefert wenn man genug Gold dabei hat, um das Zimmer zu bezahlen. An der Stelle (1) kannst du dann ganz einfach den Preis ändern, um das Skript für die anderen Zimmer zu benutzen. Das entsprechende Skript für (**) sieht so aus: code\: Also einfach die Bedingung negiert. Ok, jetzt kann der Spieler also "Hier bitte!" nur sagen, wenn er es auch bezahlen kann, ansonsten bleibt ihm nur"Soviel habe ich nicht!". Jetzt müssen wir nur noch dafür sorgen, dass der Schlüssel und das Gold den Besitzer wechseln. Dazu schreiben wir an Stelle (***) des Dialogbaumes ins "Erfolgte Aktionen" Feld folgendes Skript: code\: ,wobei du für die Skripts der anderen Zimmer einfach bei (1) und (2) die jeweiligen Aenderungen eintragen musst! Mist: hat länger als eine Stunde gedauert ! ___________________________ Verliebt in den UserDefined Event ^^ Überzeugter Episode 2 Hasser[/font] |
||
26.08.2002, 18:22 | #5 | ||
Corky Beiträge: 5 |
Vielen Dank! :) Das Script funktioniert 1a! Hab die Teile einfach in meinen schon fertigen Gesprächsbaum eingefügt... Und ich hab auch verstanden wie es funktioniet! ;) |
||
26.08.2002, 18:51 | #6 | ||
Rhaegar Beiträge: 296 |
Freut mich zu hören. Ich konnt's nämlich leider nicht selbst testen, weil mein Toolset heute Mittag ein wenig rumgezickt hat ;) ! |
||
|