Construction Set Skriptthread zum Construction Set

@ Diarrhoe
Scheint auch nicht zu funktionieren...
Dann muss ich mir wohl etwas anderes überlegen ;)

Um das via Schalter (vorerst) zu machen muss ich doch nur
Code:
begin onmagiceffecthit FIDG
durch
Code:
begin onActivate
ersetzen oder?
 
Zuletzt bearbeitet:
Hab gerade nochmal im Wiki nachgeguckt. Da steht zu onMagicEffectHit:
In order for onMagicEffectHit to run, the calling object must have normal collision.
Das ist bei besagtem Objekt offensichtlich nicht der Fall...
Da bleibt dir wohl nicht anderes als den Feuerball kollidieren und dadurch erlöschen zu lassen. Du kannst ja in gleicher Flugbahn direkt einen neuen Feuerball entstehen lassen.
Oder du nimmst die einfache Variante mit OBSE.
 
Ich habe die folgende Meldung bekommen:
Code:
---------------------------
Warning
---------------------------
Script 'EZQuestScript', line 138:
Max script line length (512 characters) exceeded.





Weiterspielen?

"Yes to all" will disable all Warnings this session.
---------------------------
Ja   Nein   Abbrechen   
---------------------------
Das Problem ist, dass ich es nicht auf mehrer Zeilen aufteilen kann, weil ich sehr viele Dinge Abfragen muss (also die Conditions einer Abfrage). Ich kann aber auch nicht auf mehrere Abfragen ineinander Arbeiten, weil der größte Teil der Conditions mit einer Klammer umgeben ist!
Ich währe über jede Idee, wie man das Problem umgehen kann, froh.
 
Ich habe die folgende Meldung bekommen:
Code:
---------------------------
Warning
---------------------------
Script 'EZQuestScript', line 138:
Max script line length (512 characters) exceeded.





Weiterspielen?

"Yes to all" will disable all Warnings this session.
---------------------------
Ja   Nein   Abbrechen   
---------------------------
Das Problem ist, dass ich es nicht auf mehrer Zeilen aufteilen kann, weil ich sehr viele Dinge Abfragen muss (also die Conditions einer Abfrage). Ich kann aber auch nicht auf mehrere Abfragen ineinander Arbeiten, weil der größte Teil der Conditions mit einer Klammer umgeben ist!
Ich währe über jede Idee, wie man das Problem umgehen kann, froh.

Einfach so schreiben?

Code:
if(x == y)
   if(y == 2)
      ; do stuff
   endif
endif
Ist auch performance-freundlicher. Ich wüsste nicht, wieso man das nicht so schreiben könnte.
 
  • Like
Reaktionen: Schmelz
du musst dir das in etwa so vorstellen:
Code:
if (a=1 && (b=1 || b=2 || b=3)) || (a=2 && (b=4 || b=5 || b=6) || ...
Das ganze nur noch ein wenig länger^^
 
Code:
if (a=1 && (b=1 || b=2 || b=3))
;führe aus was gemacht werden soll
else (a=2 && (b=4 || b=5 || b=6)
;führe aus was gemacht werden soll
Zwar unschön, erfüllt aber den Zweck. Du ersetzt sozusagen das || durch ein "else", musst dafür aber den auszuführenden Teil eben da auch reinkopieren, sodass du ihn doppelt drinne stehen hast, auch wenn er nur ein mal ausgeführt wird. Falls es recht viel ist, was ausgeführt werden soll kannst du aber auch eine Funktion schreiben, siehe user-definedfunctions. Wenn ich wüsste, was das für Bedingungen sind, könnte man hier bestimmt auch mit Modulo arbeiten... aber egal, die Methode oben sollte auch funktionieren.
 
  • Like
Reaktionen: Schmelz
Auch richtig... aber allein einer diesre Teile:
Code:
(apparatusC == 2 && (apparatus.getBaseObject == 0006EE52 || apparatus.getBaseObject == 0006EE66 || 
apparatus.getBaseObject == 0006EE68 || apparatus.getBaseObject == 0006EE6A || apparatus.getBaseObject == 0006EE5C || 
apparatus.getBaseObject == 0006EE5E || apparatus.getBaseObject == 0006EE60 || apparatus.getBaseObject == 0006EE62 || 
apparatus.getBaseObject == 0006EE52 || apparatus.getBaseObject == 0006EE55 || apparatus.getBaseObject == 0006EE57 || 
apparatus.getBaseObject == 0006EE59 || apparatus.getBaseObject == 0006E310 || apparatus.getBaseObject == 0006E311 || 
apparatus.getBaseObject == 0006E312 || apparatus.getBaseObject == 0006E313))
hat schon über 500 Zeichen
ganz abgesehen vom ganzen:
Code:
if apparatus.isOffLimits 7 == 0 && (apparatusC == 1 || (apparatusC == 2 && (apparatus.getBaseObject == 0006EE52 || 
apparatus.getBaseObject == 0006EE66 || apparatus.getBaseObject == 0006EE68 || apparatus.getBaseObject == 0006EE6A || 
apparatus.getBaseObject == 0006EE5C || apparatus.getBaseObject == 0006EE5E || apparatus.getBaseObject == 0006EE60 || 
apparatus.getBaseObject == 0006EE62 || apparatus.getBaseObject == 0006EE52 || apparatus.getBaseObject == 0006EE55 || 
apparatus.getBaseObject == 0006EE57 || apparatus.getBaseObject == 0006EE59 || apparatus.getBaseObject == 0006E310 || 
apparatus.getBaseObject == 0006E311 || apparatus.getBaseObject == 0006E312 || apparatus.getBaseObject == 0006E313)) ||
 (apparatusC == 3 && (apparatus.getBaseObject == 0006EE52 || apparatus.getBaseObject == 0006EE66 || 
apparatus.getBaseObject == 0006EE68 || apparatus.getBaseObject == 0006EE6A || apparatus.getBaseObject == 0006EE5C || 
apparatus.getBaseObject == 0006EE5E || apparatus.getBaseObject == 0006EE60 || apparatus.getBaseObject == 0006EE62 || 
apparatus.getBaseObject == 0006EE52 || apparatus.getBaseObject == 0006EE55 || apparatus.getBaseObject == 0006EE57 || 
apparatus.getBaseObject == 0006EE59)) || (apparatusC == 1 || (apparatusC == 4 && (apparatus.getBaseObject == 0006EE52 
|| apparatus.getBaseObject == 0006EE66 || apparatus.getBaseObject == 0006EE68 || apparatus.getBaseObject == 0006EE6A 
|| apparatus.getBaseObject == 0006EE5C || apparatus.getBaseObject == 0006EE5E || apparatus.getBaseObject == 0006EE60 
|| apparatus.getBaseObject == 0006EE62)) || (apparatusC == 5 && (apparatus.getBaseObject == 0006EE52 || 
apparatus.getBaseObject == 0006EE66 || apparatus.getBaseObject == 0006EE68 || apparatus.getBaseObject == 0006EE6A)))
mit über 1700^^

edit: Zur besseren Lesbarkeit habe einige Umbrüche eingefügt
 
Zuletzt bearbeitet:
lol. :blink:
Sowas habe ich ja noch nie gesehen. :lol:

Du könntest das alles doch mit elseif's machen. Außerdem, wozu brauchst Du diese ganzen BaseObject-Abfragen?
 
  • Like
Reaktionen: Schmelz
@ Schmelz: Habe dir doch geschrieben, wie du es machen sollst. Beispiel an deiner ersten Abfrage:
Code:
if (apparatusC == 2 && (apparatus.getBaseObject == 0006EE52 || apparatus.getBaseObject == 0006EE66 || apparatus.getBaseObject == 0006EE68)
    ;tue irgendwas
elseif (apparatus.getBaseObject == 0006EE6A || apparatus.getBaseObject == 0006EE5C || apparatus.getBaseObject == 0006EE5E || apparatus.getBaseObject == 0006EE60)
    ;tue das gleiche
elseif (apparatus.getBaseObject == 0006EE62 || apparatus.getBaseObject == 0006EE52 || apparatus.getBaseObject == 0006EE55 || apparatus.getBaseObject == 0006EE57)
    ;tue wieder das gleiche
elseif (apparatus.getBaseObject == 0006EE59 || apparatus.getBaseObject == 0006E310 || apparatus.getBaseObject == 0006E311 || apparatus.getBaseObject == 0006E312 || apparatus.getBaseObject == 0006E313))
    ;tue wieder wieder das gleiche

Außerdem ist hex nicht die baseID, sondern eben die die im Editor steht.
 
  • Like
Reaktionen: Schmelz
Danke noch mal, aber da ist mir auch gerade eine Idee gekommen wie ich das ganze um einiges kürzen kann^^

Die vielen Abefragen brauche ich umherauszufinden, ob die Referenz eine Mindeststufe hat. (oder eben darüber) -> Das ganze ist für die Auswahlmöglichkeiten die ich gerade in den "Einsammel-Zauber" einbaue.
 
Danke noch mal, aber da ist mir auch gerade eine Idee gekommen wie ich das ganze um einiges kürzen kann^^

Die vielen Abefragen brauche ich umherauszufinden, ob die Referenz eine Mindeststufe hat. (oder eben darüber) -> Das ganze ist für die Auswahlmöglichkeiten die ich gerade in den "Einsammel-Zauber" einbaue.

Was meinst Du mit Mindeststufe?
 
Und das ist das Ergebnis:
Code:
if apparatus.isOffLimits 7 == 0 && (apparatusC == 1 || (apparatus.getBaseObject == AlembicMaster || apparatus.getBaseObject == CalcinatorMaster || apparatus.getBaseObject == MortarPestleMaster || apparatus.getBaseObject == RetortMaster))
     apparatus.activate player, 1
elseif apparatus.isOffLimits 7 == 0 && (apparatusC == 2 || apparatusC == 3 || apparatusC == 4) && (apparatus.getBaseObject == AlembicExpert || apparatus.getBaseObject == CalcinatorExpert || apparatus.getBaseObject == MortarPestleExpert || apparatus.getBaseObject == RetortExpert)
     apparatus.activate player, 1
elseif apparatus.isOffLimits 7 == 0 && (apparatusC == 2 || apparatusC == 3) && (apparatus.getBaseObject == AlembicJourneyMan || apparatus.getBaseObject == CalcinatorJourneyMan || apparatus.getBaseObject == MortarPestleJourneyMan || apparatus.getBaseObject == RetortJourneyMan)
      apparatus.activate player, 1
elseif apparatus.isOffLimits 7 == 0 && apparatusC == 2 && (apparatus.getBaseObject == AlembicApprentice || apparatus.getBaseObject == CalcinatorApprentice || apparatus.getBaseObject == MortarPestleApprentice || apparatus.getBaseObject == RetortApprentice)
      apparatus.activate player, 1
endif
 
DAS es sich um einen Apparat handelt ist scho vorher sichergestellt. Und dieses "GetQualitiy" bau ich mal ein.

edit: UNd ich suche noch nach einer Möglichkeit, abzufragen ob ein Objekt (Waffe/Rüstung/Pfeil) einen magischen Effekt hat.
 
Zuletzt bearbeitet: