Autor Thema: Repair-Script funktioniert nicht  (Gelesen 6284 mal)

Offline judge

  • Bürger
  • Beiträge: 22
Repair-Script funktioniert nicht
« am: 19. März 2012, 12:50:28 Uhr »
hi leute, ich habe mich nach einigen tutorials als totaler noob mal an mein eigenes script gewagt.. leider hab ich wohl was falsch gemacht weis aber nicht genau was. vielleicht kann mir ja hier jemand mit scripting erfahrung einen tip geben. zuerst mal ne erklärung was ich überhaupt machen will:

ein gegenstand soll repariert werden und der spieler muss dafür einen repair-skill von mind. 25 haben (und die quest muss aktiv sein). wenn man den gegenstand nun anklickt soll folgendes passieren: abfrage ob die queststage 20 oder höher ist (dann wurde der gegenstand bereits repariert) und ausgabe einer entsprechenden nachricht. sonst prüfen ob die queststage auf 10 ist (quest ist aktiv) und eine variable setzen. sonst eine nachricht a la "der gegenstand sieht beschädigt aus" (quest ist noch nicht aktiv und spieler kann erstmal nix machen).
wenn die queststage auf 10 ist soll weiterhin der reparieren-skill abgefragt werden und dann entweder a) der gegenstand repariert werden oder b) eine nachricht ausgegeben werden, dass der skill zu niedrig ist.

folgendes script funktioniert leider nicht und ich habe keine ahnung warum...


SCN 01RepairQuest

short 1VarRepairQuest

begin OnActivate player   
   
if  getStage 1RepairQuest >= 20      ; abfrage ob die queststage den wert 20 oder höher hat (quest ist abgeschlossen)
    showmessage 01AMMessage4      ; zeigt nachricht, dass der gegenstand bereits repariert wurde

elseif
    getStage 1RepairQuest == 10      ; abfrage ob die queststage den wert 10 hat (quest ist aktiv)
    set 1VarRepairQuest to 1             ; variable 1varRepairQuest auf den wert 1 setzen

elseif
    showmessage 01AMMessage1      ; zeigt die nachricht, dass der gegenstand beschädigt aussieht (quest ist nicht aktiv)

endif
end


begin GameMode
   
if 1VarRepairQuest == 1                  ; abfrage ob die variable 1varRepairQuest den wert 1 hat      
   
    if player.getAV repair >= 25                   ; abfrage ob der repair-skill mind. den wert 25 hat
   showmessage 01AMMessage2   ; nachricht, dass der gegenstand erfolgreich repariert wurde
   setStage 1RepairQuest to 20           ; queststage auf den wert 20 setzen

    else

   if player.getAv repair < 25                   ; wenn repaier-skill unter 25 ist
   showmessage 01AMMessage3   ; nachricht, dass der repair-skill zu niedrig ist
       
   endif   
    endif
endif
end
« Letzte Änderung: 19. März 2012, 12:54:12 Uhr von judge »

Offline judge

  • Bürger
  • Beiträge: 22
Re: Repair-Script funktioniert nicht
« Antwort #1 am: 19. März 2012, 12:55:06 Uhr »
edit: mist, die formatierung sieht jetzt ein bißchen wirr aus aber ich hoffe es ist so noch lesbar.

edit 2: nochmal mist, beim ersten mal statt auf editieren auf antworten geklickt...

« Letzte Änderung: 19. März 2012, 12:56:39 Uhr von judge »

Offline Lexx

  • Administrator
  • Auserwähltes Wesen
  • Beiträge: 17.726
Re: Repair-Script funktioniert nicht
« Antwort #2 am: 19. März 2012, 13:15:34 Uhr »
Du kannst [.code]-Tags benutzen, um das Zeug zu formatieren.
only when you no-life you can exist forever, because what does not live cannot die

Offline tortured Tomato

  • Highwaymanfahrer
  • Beiträge: 1.028
Re: Repair-Script funktioniert nicht
« Antwort #3 am: 19. März 2012, 20:59:25 Uhr »
elseif
    getStage 1RepairQuest == 10      ; abfrage ob die queststage den wert 10 hat (quest ist aktiv)

Ich denke da fehlt ein if

if getStage ...

Außerdem verwendest du "elseif" falsch. Entweder "else" oder "elseif" + "Ausdruck auf selber Zeile"

Also:
elseif    getStage 1RepairQuest == 10      ; abfrage ob die queststage den wert 10 hat (quest ist aktiv)
Quasi
if  getStage 1RepairQuest >= 20      ; abfrage ob die queststage den wert 20 oder höher hat (quest ist abgeschlossen)
    showmessage 01AMMessage4      ; zeigt nachricht, dass der gegenstand bereits repariert wurde

elseif  getStage 1RepairQuest == 10      ; abfrage ob die queststage den wert 10 hat (quest ist aktiv)
    set 1VarRepairQuest to 1             ; variable 1varRepairQuest auf den wert 1 setzen

else
    showmessage 01AMMessage1      ; zeigt die nachricht, dass der gegenstand beschädigt aussieht (quest ist nicht aktiv)

endif
end



Am Besten hier nochmal nachlesen:
http://cs.elderscrolls.com/index.php/Elseif
« Letzte Änderung: 19. März 2012, 21:11:58 Uhr von tortured Tomato »

Offline judge

  • Bürger
  • Beiträge: 22
Re: Repair-Script funktioniert nicht
« Antwort #4 am: 20. März 2012, 16:55:40 Uhr »
danke für den link. jetzt weiß ich wenigstens, dass ich mit && auch mehrere bedingungen abfragen kann. hab das script jetzt überarbeitet, leider passiert absolut nichts wenn ich den gegenstand anklicke.

durch ein gespräch mit dem questgeber hab ich die quest aktiviert und auf stage 10 gesetzt. auch einen entsprechenden eintrag im questlog habe ich erhalten. aber wie gesagt, wenn ich den gegenstand nun anklicke passiert überhaupt nix.

so sieht mein script momentan aus:

ScriptName MeineQuestScript

begin OnActivate player

if  getStage 1MeineQuest > 10
showmessage Message1 ; wenn die queststage höher als 10 ist wurde der gegenstand bereits repariert -> entsprechende nachricht anzeigen

elseif    (getStage 1MeineQuest 10) && (player.getAV repair >= 25) && (player.GetItemCount SensorModule > 0) ; wenn die queststage auf 10 ist, der repair-skill mind 25  ist und 1 sensormodul im inventar ist
      setStage 1MeineQuest 20 ; queststage auf den wert 20 setzen
player.removeItem SensorModule 1 ; 1 sensormodul entfernen
showmessage Message2 ; nachricht anzeigen, dass der gegenstand erfolgreich repariert wurde

elseif getStage 1MeineQuest 10 ; wenn quest auf stage 10 aber spieler hat zu niedrigen repair-skill oder kein sensormodul
          showmessage Message3 ; nachricht, dass entweder der repair-skill zu niedrig ist oder der spieler kein sensormodul hat

elseif showmessage Message4 ; zeigt die nachricht, dass der gegenstand beschädigt aussieht , quest ist noch nicht aktiv

endif

end

Offline tortured Tomato

  • Highwaymanfahrer
  • Beiträge: 1.028
Re: Repair-Script funktioniert nicht
« Antwort #5 am: 20. März 2012, 22:18:35 Uhr »
Wie garnix?
Noch nicht mal im Falle von
if        getStage 1MeineQuest > 10 ?

Jep, den GameMode Block kannst du komplett knicken. Würde alles in den OmActivate Block schreiben.

Das letzte If-Statement ist Unsinn
elseif showmessage Message4
Es heißt hier ELse, da SchowMessage keine Bedingung ist, sondern eine Funktion die ausgeführt werden soll.
« Letzte Änderung: 20. März 2012, 22:22:20 Uhr von tortured Tomato »

Offline judge

  • Bürger
  • Beiträge: 22
Re: Repair-Script funktioniert nicht
« Antwort #6 am: 21. März 2012, 12:42:43 Uhr »
so, dass mit dem elseif habe ich korrigiert, leider tut sich immer noch nichts wenn ich das objekt anklicke. liegt dass vielleicht an falschen einstellungen beim objekt?  der gegenstand den man aktivieren soll ist ein projektor. ich habe mir daher einen kopiert und eine andere id eingegeben. unter "script" habe ich dann mein script ausgewählt. wenn ich den projektor nun im spiel sehe steht dort auch "aktiviere projektor" aber wenn ich dann E drücke passiert nichts.

hier mal ein bild der einstellungen:

http://s1.directupload.net/file/d/2836/vhbn7hhk_jpg.htm

Offline tortured Tomato

  • Highwaymanfahrer
  • Beiträge: 1.028
Re: Repair-Script funktioniert nicht
« Antwort #7 am: 21. März 2012, 15:47:51 Uhr »
Getstage ist sicher die falsche Funktion für deine Zwecke.

Schau mal hier
http://cs.elderscrolls.com/index.php/GetStage

und hier
http://cs.elderscrolls.com/index.php/GetStageDone

Oder du machst's einfach mit einer Variable. Du willst den Activator reparieren?  Poste am besten nochmal dein gesamtes Script.
« Letzte Änderung: 21. März 2012, 15:53:11 Uhr von tortured Tomato »

Offline judge

  • Bürger
  • Beiträge: 22
Re: Repair-Script funktioniert nicht
« Antwort #8 am: 21. März 2012, 16:19:05 Uhr »
ich habe den fehler mittlerweile gefunden! statt "getStage MeineQuest 10" musste es "getStage MeineQuest == 10" heißen. jetzt funktionierts auch.
ganz nützlich ist auch diese seite hier: http://www.cipscis.com/fallout/utilities/validator.aspx

Offline tortured Tomato

  • Highwaymanfahrer
  • Beiträge: 1.028
Re: Repair-Script funktioniert nicht
« Antwort #9 am: 21. März 2012, 17:45:20 Uhr »
Oh, gut, naklar :D
Solche Syntaxfehler überliest man schnell mal. Allerdings erscheint mir die Funktion auch nicht gerade gut beschrieben.