Construction Set Skriptthread zum Construction Set

Fehlermeldung bei Skript

Hallo scharesoft-community,
ich bin zurzeit dabei einen Mod für Nehrim zumachen, bei dem u.A. auch ein Feld auf den man selber Pflanzen anbauen kann vorkommen soll.
Doch leider gibt es bei den Script noch Probleme:
Wenn ich ihn speichern will kommt folgende Fehlermeldung: Script Command "00ErdbeerpflanzeRef.enable" not found.
Kann man Pflanzen etwa doch nicht wie Flammen enablen und disablen???

Hier noch der komplette Skript:
scn PflanzenAnbauScript


ref SelfRef
short State


begin OnActivate
set SelfRef to GetSelf
set State to 1
Activate
end


begin GameMode


If State == 1
If (SelfRef.getitemcount Erdbeere > 2)
00ErdbeerPflanzeRef.enable
00TomatenPflanzeRef.disable
00WeizenAehreRef.disable
00KuerbisPflanzeRef.disable
00SalatPflanzeRef.disable
00FlachsRef.disable
00KartoffelpflanzeRef.disable
00KarottenPflanzeRef.disable
00MaispflanzeRef.disable
00WeinPflanzeRef.disable
Else
00ErdbeerPflanzeRef.disable


If (SelfRef.getitemcount Flachssamen > 2)
00FlachsRef.enable
00ErdbeerPflanzeRef.disable
00TomatenPflanzeRef.disable
00WeizenAehreRef.disable
00KuerbisPflanzeRef.disable
00SalatPflanzeRef.disable
00KartoffelpflanzeRef.disable
00KarottenPflanzeRef.disable
00MaispflanzeRef.disable
00WeinPflanzeRef.disable
Else
00FlachsRef.disable


If (SelfRef.getitemcount Tomate > 2)
00TomatenPflanzeRef.enable
00WeizenAehreRef.disable
00KuerbisPflanzeRef.disable
00SalatPflanzeRef.disable
00FlachsRef.disable
00KartoffelpflanzeRef.disable
00KarottenPflanzeRef.disable
00ErdbeerPflanzeRef.disable
00MaispflanzeRef.disable
00WeinPflanzeRef.disable
Else
00TomatenPflanzeRef.disable


If (SelfRef.getitemcount Weizenkorn > 2)
00WeizenAehreRef.enable
00TomatenPflanzeRef.disable
00KuerbisPflanzeRef.disable
00SalatPflanzeRef.disable
00FlachsRef.disable
00KartoffelpflanzeRef.disable
00KarottenPflanzeRef.disable
00ErdbeerPflanzeRef.disable
00MaispflanzeRef.disable
00WeinPflanzeRef.disable
Else
00WeizenAehreRef.disable


If (SelfRef.getitemcount Kuerbis > 2)
00KuerbisPflanzeRef.enable
00WeizenAehreRef.disable
00TomatenPflanzeRef.disable
00SalatPflanzeRef.disable
00FlachsRef.disable
00KartoffelpflanzeRef.disable
00KarottenPflanzeRef.disable
00ErdbeerPflanzeRef.disable
00MaispflanzeRef.disable
00WeinPflanzeRef.disable
Else
00KuerbisPflanzeRef.disable


If (SelfRef.getitemcount Salat > 2)
00SalatPflanzeRef.enable
00KuerbisPflanzeRef.disable
00WeizenAehreRef.disable
00TomatenPflanzeRef.disable
00FlachsRef.disable
00KartoffelpflanzeRef.disable
00KarottenPflanzeRef.disable
00ErdbeerPflanzeRef.disable
00MaispflanzeRef.disable
00WeinPflanzeRef.disable
Else
00SalatPflanzeRef.disable


If (SelfRef.getitemcount Kartoffelknolle > 2)
00KatoffelPflanzeRef.enable
00SalatPflanzeRef.disable
00KuerbisPflanzeRef.disable
00WeizenAehreRef.disable
00TomatenPflanzeRef.disable
00FlachsRef.disable
00KarottenPflanzeRef.disable
00ErdbeerPflanzeRef.disable
00MaispflanzeRef.disable
00WeinPflanzeRef.disable
Else
00KartoffelPflanzeRef.disable


If (SelfRef.getitemcount Karotte > 2)
00KarottenPflanzeRef.enable
00KatoffelPflanzeRef.disable
00SalatPflanzeRef.disable
00KuerbisPflanzeRef.disable
00WeizenAehreRef.disable
00TomatenPflanzeRef.disable
00FlachsRef.disable
00ErdbeerPflanzeRef.disable
00MaispflanzeRef.disable
00WeinPflanzeRef.disable
Else
00KarottenPflanzeRef.disable


If (SelfRef.getitemcount Mais > 2)
00MaispflanzeRef.enable
00KarottenPflanzeRef.disable
00KatoffelPflanzeRef.disable
00SalatPflanzeRef.disable
00KuerbisPflanzeRef.disable
00WeizenAehreRef.disable
00TomatenPflanzeRef.disable
00FlachsRef.disable
00ErdbeerPflanzeRef.disable
00WeinPflanzeRef.disable
Else
00MaispflanzeRef.disable


If (SelfRef.getitemcount Weintrauben > 2)
00WeinPflanzeRef.enable
00MaispflanzeRef.disable
00KarottenPflanzeRef.disable
00KatoffelPflanzeRef.disable
00SalatPflanzeRef.disable
00KuerbisPflanzeRef.disable
00WeizenAehreRef.disable
00TomatenPflanzeRef.disable
00FlachsRef.disable
00ErdbeerPflanzeRef.disable


Else
00WeinPflanzeRef.disable


Endif
Endif
Endif
Endif
Endif
Endif
Endif
Endif
set State to 0
Endif

end

Hinweis: Der Skript soll auf einen Container gelegt werden.

Mfg KünstlerderDekadenz
 
Zuletzt bearbeitet:
1. Hast du überprüft ob die ganzen Refs exestieren? eine Ref ist ein eintrag in der Welt und nicht in der Objektliste!

(2. benutze als Präfix nicht 00 oder aa, das bringt meistens zu Probleme mit mod Kompatibilität und unauffindbare Fehler. Präfix ja, 00 und aa nein

3. Tabs machen das script übersichtlicher ;)
)

Mfg, Xaser
 
  • Like
Reaktionen: KünstlerderDekadenz
@KünstlerderDekadenz

Dein Script ist ein wenig merkwürdig und so ganz steige ich nicht dahinter, was es bewirken soll.

Wenn du ein ; vor der 00ErdbeerpflanzeRef machst, könnte ich mir denken, dass die nächste Fehlermeldung

Script Command "00TomatenPflanzeRef.enable" not found


Wenn dem so ist, hast du zum ersten keine Refs vergeben. Zum zweiten frage ich mich, auf welchen Pflanzen das Script liegt? So wie es gemacht ist, wohl auf allen. Doch irgendwie erscheint es mir nicht logisch.

PHP:
    If State == 1
        If (SelfRef.getitemcount Erdbeere > 2) ; "Wenn du mehr als zwei Erdbeeren im Inventar hast"
            00ErdbeerPflanzeRef.enable ; "Die Erdbeerpflanze anschalten"
            00TomatenPflanzeRef.disable ; "Und alle anderen ausschalten"
            00WeizenAehreRef.disable
            00KuerbisPflanzeRef.disable
            00SalatPflanzeRef.disable
            00FlachsRef.disable
            00KartoffelpflanzeRef.disable
            00KarottenPflanzeRef.disable
            00MaispflanzeRef.disable
            00WeinPflanzeRef.disable
        Else
            00ErdbeerPflanzeRef.disable ; "Hast du NICHT mehr als zwei Erdbeeren im Inventar, die Erdbeerpflanze ausschalten."
Das schaut wie eine Wechselschaltung aus. Pflanzen, die ich vorher gepflanzt habe, mache ich wieder aus, wenn ich ne Erdbeere pflanze, oder nicht?

Ev. machst du es so, dass du auf jede Pflanze ein separates Script legst.

PHP:
Scriptname ErdbeerenpflanzenScript

short ErdbeereAn

Begin OnActivate

    if Player.GetItemcount Erdbeere >= 1
        00ErdbeerPflanzeRef.enable ; "Pflanze wird angeschaltet"
        player.removeItem Erdbeere 1 ; "Genaue ID fehlt hier"
        00ErdbeerPflanzeRef playsound3D PflanzenSound ;"Irgendein Geräusch zum Pflanzen."
    endif
end    
    

Begin GameMode

    if ErdbeereAn == 0 ;"Erst einmal soll die gesetzte Pflanze ja aus sein."
        00ErdbeerPflanzeRef.disable
        set ErdbeereAn to 1
    endif

end
Da die Pflanze ja aus ist, benötigst du etwas zum anklicken um die Pflanzen zu aktivieren. Wenn du es für jede Pflanze einzeln machst, wird es sehr umständlich. Beetweise wäre eine Möglichkeit. Der Spieler benötigt 20 Erdbeeren um ein Beet zu bestücken.
 
  • Like
Reaktionen: KünstlerderDekadenz
Objekte verschiebbar machen, aber nicht aufhebbar

Hallöle.

Ist es möglcih (mit Scripts) mobjekte z.B. Bücher usw. verschiebbar zu machen, aber so dass der Player sie nicht ins Inventar aufheben kann...
 
PHP:
Scriptname PfotenwegScript

Begin OnActivate

    Message "Ihr könnt das nicht aufnehmen."
    return

end
Versuch mal.

Bei Büchern gibt es noch die Möglichkeit "Can`t be taken" anzuhakeln. Dann brauchst du kein Script.
 
So einfach ist das nicht. Die nif muss geändert werden, so das aus einem Static ein Item wird. Als solches musst du sie dann natürlich ins CS einbinden.

Du kannst dir beide einmal aufrufen und die Nifs vergleichen. Da siehst du schon, was du ändern musst.
 
@Xaser: 1.Ich habe eine jeweils eien Pflanze in die Welt gesetzt und ihr dann die jeweilige Reference Editor ID geändert (z.B. 00ErdbeerPflanzeRef)
2.Werd ich mir merken ;)
3.Auch das werde ich mir merken

@Der Marquis: Den Script wollte ich auf einen Blumenkübel(container) oder ein Feld legen.
Ja es soll eine "Wechselschaltung" sein.
Ich werde dann mal deine Lösung ausprobieren und zum auslösen irgendein Gartenwerkzeug verwenden.Ich hatte sowieso vor das beetweise zu machen :)

Vielen Dank ihr 2 für die schnelle Hilfe :good:

P.S.: Die genaue ID fehlt nicht, bei Nehrim heißt das einfach Erdbeere ;)

EDIT: Das CS zeigt mir an das kddErdbeerPflanzeRef nicht existiert, obwohl ich doch eine Pflanze in die Welt gesetzt hab und ihr die Reference Editor ID kddErdbeerPflanzeRef gegeben hab :thunder:
 
Zuletzt bearbeitet:
Bin zwar nicht der Waldmeister, aber ich kanns dir trotzdem erklären:
Wenn du das Objekt platziert hast, klickst du sie im Render-Window an und kannst in dem aufpoppenden Fenster die Ref eingeben. Im selben Fenster gibt es auch (weiter unten) ein Kästchen namens "Persistent Reference". Dort machst du einfach einen Haken.
Außerdem sollte ich ergänzen, dass Referenzen keine Zahlen am Anfang haben dürfen.

@CreamyCewie:
Es gibt sowas Ähnliches bereits, inwieweit das funktionstüchtig ist, weiß ich allerdings nicht: Link
Die entsprechende ESP-Datei heißt "QQuix Conceptual - Wagon away". Der Autor hat auch ein Video zu dieser Mod hochgeladen: Video
Du kannst dir die Mod ja mal angucken und deinen Wünschen anpassen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: CreamyCewie
hi, ich brauch mal wieder nen Script.
Und zwar soll ein Activator eine Messagebox öffnen, in der ein kurzer Text steht und man zwischen ja und nein wählen kann.
Soweit komm ich selbst aber dann weis ich nicht mehr weiter.
Wenn man auf nein drückt passiert nichts wenn man auf ja drückt hatt man zu 50% die change 1 Gold zu gewinnen und zu 50% 1Gold zu verlieren. Es wird dann einfach ohne weitere Message hinzugefügt.
Da es sich um ein Kopf oder Zahl Spiel in Tavernen handeln soll muss esw immer wieder gemacht werden können nicht nur 1 mal.
wenn jemand eine Idee hat, wie man das mit den 50% hinkriegt wäre ich seh dankbar.

g Käse
 
Sollte in etwa so aussehen:
Code:
scn name

short activated
short button

Begin onActivate

if activated
 return
endif
if isActionRef player
 set activated to 1
 set button to -1
 messagebox "Blabla!" "Ja!" "Nein!"
endif

end


Begin GameMode

if activated
 set button to getButtonPressed
 if button == -1
  return
 elseif button == 0
  if getRandomPercent >= 50
   player.addItem Gold001 1
  else
   player.removeItem Gold001 1
  endif
  set activated to 0
 elseif button == 1
  set activated to 0
  return
 endif
endif

end
 
  • Like
Reaktionen: Käsekuchen
Hallo ich wollt mal fragen was an dem script hier nicht geht:

SCN Blabla
Ref Light
Ref Myself
short Doonce

Begin GameMode
Set Myself to Getself
set Light to FireLightREF.CreateFullActorCopy
Light.moveto Myself

If Doonce == 0
Pms effectFireDamage
Set Doonce to 1
endif
end

das Script wird auf eine Creatur gelegt. Die den Effect FireDamage haben soll und ein Light sollte immer bei der creatur sein. da es schließlich mehrere davon gibt hab ich gedacht ich könnte das light einfach mit CreateFullActorCopy kopieren und jeder creatur ein light geben funktioniert aber leider nicht ganz. Auserdem funktioniert der Effect auch nicht immer.

Dann noch eine frage wie könnt ich in diesen script miteinbinden das ein HitTriggerShadder oder wie das nochmal heißt^^ miteingebunden und activ werden soll und zwar immer dann wen die Creatur einen schritt macht. Geht das überhaupt?

MFG Raist
 
Also zunächst mal "createfullactorcopy" kann wie der Name eigentlich bereits aussagt nur auf Actors, also creatures oder NPCs ausgeführt werden!
Das Licht könntest du folgendermaßen platzieren:
Code:
scn name
ref light
ref myself
short once

begin gamemode
set myself to getself
if once==0
set light to myself.placeatme <LIGHT-ID> 1
set once to 1
endif
light.moveto myself
end
Für den Feuereffekt erstellst du am besten eine Eigenschaft mit einem Skript-Effekt, der folgendes Skript hat:
Code:
scn NAME

begin scripteffectstart
pms effectfiredamage
end

begin scripteffectfinish
sms effectfiredamage
end
Und das Skript natürlich auf "Magic Effect" einstellen, damit du es zuordnen kannst ;)

Der HitShader bei jedem Schritt geht vermutlich nicht...Ich kenne zumindest keine Abfrage für das Laufen eines Actors...:?
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Raistlin
Da ich eig. keine Ahnung vom Scripten habe wollte ich mal fragen wie ein script aussieht wenn man zB. eine Kreatur beschwören will wie zB einen Minotauren.
Will nähmlich n eigenen Zauber machen weiß nur net wie:lol:

Mfg ScHiZo