Repair-Script funktioniert nicht

Hilfe bei der Erstellung von Fallout: New Vegas Modifikationen, sowie Werbung und Ankündigungen.

Moderators: Newsposter, Global Moderator, Zugriff Intern, Moderator

Post Reply
judge
Bürger
Posts: 22
Joined: Tue Jan 22, 2008 12:10 pm

Repair-Script funktioniert nicht

Post by judge »

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
Last edited by judge on Mon Mar 19, 2012 12:54 pm, edited 1 time in total.
judge
Bürger
Posts: 22
Joined: Tue Jan 22, 2008 12:10 pm

Re: Repair-Script funktioniert nicht

Post by judge »

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...
Last edited by judge on Mon Mar 19, 2012 12:56 pm, edited 1 time in total.
User avatar
Lexx
Administrator
Posts: 27348
Joined: Sat Dec 10, 2005 6:27 pm

Re: Repair-Script funktioniert nicht

Post by Lexx »

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
User avatar
tortured Tomato
Highwaymanfahrer
Posts: 1350
Joined: Wed Jan 27, 2010 7:22 pm

Re: Repair-Script funktioniert nicht

Post by tortured Tomato »

Code: Select all

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:

Code: Select all

elseif    getStage 1RepairQuest == 10      ; abfrage ob die queststage den wert 10 hat (quest ist aktiv)
Quasi

Code: Select all

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
Last edited by tortured Tomato on Mon Mar 19, 2012 9:11 pm, edited 1 time in total.
judge
Bürger
Posts: 22
Joined: Tue Jan 22, 2008 12:10 pm

Re: Repair-Script funktioniert nicht

Post by judge »

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:

Code: Select all

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
User avatar
tortured Tomato
Highwaymanfahrer
Posts: 1350
Joined: Wed Jan 27, 2010 7:22 pm

Re: Repair-Script funktioniert nicht

Post by tortured Tomato »

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

Code: Select all

elseif		showmessage Message4
Es heißt hier ELse, da SchowMessage keine Bedingung ist, sondern eine Funktion die ausgeführt werden soll.
Last edited by tortured Tomato on Tue Mar 20, 2012 10:22 pm, edited 1 time in total.
judge
Bürger
Posts: 22
Joined: Tue Jan 22, 2008 12:10 pm

Re: Repair-Script funktioniert nicht

Post by judge »

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
User avatar
tortured Tomato
Highwaymanfahrer
Posts: 1350
Joined: Wed Jan 27, 2010 7:22 pm

Re: Repair-Script funktioniert nicht

Post by tortured Tomato »

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.
Last edited by tortured Tomato on Wed Mar 21, 2012 3:53 pm, edited 1 time in total.
judge
Bürger
Posts: 22
Joined: Tue Jan 22, 2008 12:10 pm

Re: Repair-Script funktioniert nicht

Post by judge »

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
User avatar
tortured Tomato
Highwaymanfahrer
Posts: 1350
Joined: Wed Jan 27, 2010 7:22 pm

Re: Repair-Script funktioniert nicht

Post by tortured Tomato »

Oh, gut, naklar :D
Solche Syntaxfehler überliest man schnell mal. Allerdings erscheint mir die Funktion auch nicht gerade gut beschrieben.
Post Reply

Return to “New Vegas Modding”