Construction Set Der Scriptthread

Wie bereits gesagt, gibt es dieses Script doch bereits. Nimm zum Beispiel das Script auf den Bogenschützen-Zenturios, dass musst du nur gering abändern:

Code:
begin replenishammo_script

if ( MenuMode == 1 )
  return
endif

if ( Player->HasItemEquipped "meine_armbrust" )
  if ( Player->GetItemCount "meine_bolzen" < 1 )
    Player->AddItem "meine_bolzen" 1
    Player->Equip "meine_bolzen"
  endif
endif

end
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Nagor
Ein kleines problem noch wenn ich mein Spiel Lade dann kommt das da:

Script replerishammo_script
Trying to RunFunction index greater than functioncount

The script will not run anymore

Kannst du mir da noch schnell helfen bitte?
 
Zuletzt bearbeitet:
Natürlich muss es MenuMode == 1 heißen. Das Script funktioniert auch, das ist getestet.

Aber bist du sicher, dass du ein Script für Morrowind haben willst? So eine Fehlermeldung habe ich nämlich noch nie bekommen.
 
Script replerishammo_script
Trying to Run Function index greater than functioncount
Sag mein junger Padawan, hast du eventuell nur Morrowind ohne Erweiterungen?

Sinngemäße Übersetzung:
Es wurde eine Funktion mit einer Indexnummer größer als die Anzahl der vorhandenen Funktionen aufgerufen.

Bedeutung:
Die Gameengine soll eine ihr unbekannte da nicht vorhandene Funktion ausführen.

Passiert im Regelfall dann, wenn man ein Script mit Tribunal/Bloodmoon Funktionen im Morrowind Basisspiel ausführt. Kann auch in Verbindung mit MWSE auftreten, aber da kenn ich mich nicht mit aus, das Ding wollte bei mir noch nie funktionieren.
 
Ich hab nur Morrowind, aber wenns nicht ohne die Addons geht ich wollte sie mir sowieso mal zulegen:)

Oder gibts noch eine andere möglichkeit?
 
Zuletzt bearbeitet:
Guten Abend,

Ich brauch eure Hilfe.
Ich möchte eine Kreatur machen um die eine Elementar Aura ist.
Also der Script soll so Funktoniren wie der ProximityMine Script.
Leider Funktioniert der Script bei Kreaturen nicht, des wegen bräuchte ich eure Hilfe ob ihr vielleicht denn umschreiben könnt so das der auch bei Kreaturen geht.

Hier ist der Script von der Mine

begin proximityMine

float playerdistance
float timer
float resettime
short proximity
short triggered
short dieroll
short sneakskill
short whichspell
short initialized

if ( MenuMode )
return
endif


if ( initialized == 0 )
set proximity to 300 ;range for mine
set resettime to 4 ;time for mine to reset itself
set initialized to 1
endif

if ( triggered == 1 )
set timer to ( timer + GetSecondsPassed )
if ( timer > 4 )
set triggered to 0
set timer to 0
endif
return
endif

set playerdistance to GetDistance "player"

if ( playerdistance < proximity )
set triggered to 1

if ( GetPCSneaking == 1 )
set dieroll to ( Random 100 )
set sneakskill to ( player->GetSneak )
if ( dieroll < sneakskill )
return
endif
endif

;must be touch range spells
set whichspell to Random 4
if ( whichspell == 0 )
Cast "prox_mine_fire" player
elseif (whichspell == 1 )
Cast "prox_mine_frost" player
elseif (whichspell == 2 )
Cast "prox_mine_poison" player
elseif (whichspell == 3 )
Cast "prox_mine_shock" player
elseif (whichspell == 3 )
Cast "prox_mine_life" player
endif

endif

End ProximityMine
 
Ich hab nur Morrowind, aber wenns nicht ohne die Addons geht ich wollte sie mir sowieso mal zulegen:)

Oder gibts noch eine andere möglichkeit?

1. Kauf dir die Addons. Die rentieren sich sowieso ;)
2. Nicht direkt. Du kannst die Zeile mit dem Equip löschen, aber dann muss der Spieler den Bolzen jedes Mal per Hand ausrüsten, was ja ziemlich nervig wäre.

Ich möchte eine Kreatur machen um die eine Elementar Aura ist.
Also der Script soll so Funktoniren wie der ProximityMine Script.
Leider Funktioniert der Script bei Kreaturen nicht, des wegen bräuchte ich eure Hilfe ob ihr vielleicht denn umschreiben könnt so das der auch bei Kreaturen geht.

Und was soll deine Kreatur nun machen? Elementarzauber auf den Spieler zaubern?
In dem Fall sollte das Script eigentlich funktionieren.
 
2. Nicht direkt. Du kannst die Zeile mit dem Equip löschen, aber dann muss der Spieler den Bolzen jedes Mal per Hand ausrüsten, was ja ziemlich nervig wäre.
wie wärs wenn du statt auf einen auf zwei Bolzen prüfst ... d.h. wenn man weniger als 2 Bolzen hat bekommt man einen dazu - dadurch musst du nur einmal manuell equippen, da die Menge in der Regel nicht mehr auf Null sinkt (nur so als Workaround-Lösung)
 
  • Like
Reaktionen: Killfetzer
Und was soll deine Kreatur nun machen? Elementarzauber auf den Spieler zaubern?
In dem Fall sollte das Script eigentlich funktionieren.
Nein, ich möchte ja eine Elementar Aura haben.
Der Scirpt soll aus der Kreatur eine Wandelnde Proximity Mine machen.
Die Kreatur bleibt normal, nur mit denn Unterschied das sie eine Art Elementar Schild um sich hat.

Würde das auch noch gehen?
 
Zuletzt bearbeitet:
wie wärs wenn du statt auf einen auf zwei Bolzen prüfst ... d.h. wenn man weniger als 2 Bolzen hat bekommt man einen dazu - dadurch musst du nur einmal manuell equippen, da die Menge in der Regel nicht mehr auf Null sinkt (nur so als Workaround-Lösung)

Stimmt, das ist eine gute Idee.

Nein, ich möchte ja eine Elementar Aura haben.
Der Scirpt soll aus der Kreatur eine Wandelnde Proximity Mine machen.
Die Kreatur bleibt normal, nur mit denn Unterschied das sie eine Art Elementar Schild um sich hat.

Würde das auch noch gehen?

Nimm doch einfach den entsprechenden Zaubereffekt und mach eine Fähigkeit draus: Feuerschild, Frostschild oder Blitzschild. ;)
 
  • Like
Reaktionen: Houdini
Stimmt, das ist eine gute Idee.
Nein, ist es nicht. Grundsätzlich stimmt das zwar, was Tommy schreibt, aber... jaja aber :-D

1. "AddItem" macht haargenau, was es soll
Wenn man einen Bolzen (oder eine beliebige Menge von Bolzen) beim ersten Anlegen der Waffe manuell "equipped", werden diese als Munition genutzt. Packt man derweil via Script weitere hinzu, landen diese im normalen Inventar, werden aber nicht mit den bereits ausgerüsteten "gestackt". Die Waffe verbraucht die ausgerüstete Munition und ignoriert den Stapel im Inventar.

2. die Tücken von "Equip"
Die Funktion hat ein paar Macken.

Equip ITEMID [COUNT]

funktioniert, wenn das auszurüstende Item nicht einmal im Inventar ist. Also jedenfalls bei NPCs... der Spieler dagegen muß mindestens 1 Item per AddItem zuvor hinzugefügt bekommen haben, damit das klappt.
Wird die Anzahl weggelassen, dann equipped man eine Einheit. Leider kann man nicht feststellen, wie viele Einheiten man ausgerüstet hat im Verhältnis zu denen, die im Inventar liegen. Man sollte nämlich im Hinterkopf behalten, dass die Munition beim Verschiessen nicht immer zerstört wird. Zuweilen kann man die verschossene Munition im Inventar getöteter Gegner.aufsammeln und das produziert dann ein Problem, weil die "Anzahl" im Inventar damit ggfs. das Replenish aushebelt.

Damit das sauber funktioniert sollte folgendes gegeben sein:

1. Die Ammo muß "Unique" sein.
2. AddItem/Equip auf Basis/Prüfung genau einer Einheit Munition
3. Überzählige Munition muß per Script aus dem Inventar gelöscht werden.
4. Das Script sollte nur laufen, wenn die Waffe ausgerüstet UND gezogen ist.

Um Equip kommt man nicht herum. Tribunal ist daher Pflicht, sonst ist das zu fehleranfällig, egal wie man sich scripttechnisch windet.
 
  • Like
Reaktionen: Killfetzer und Tommy
tja wieder was gelernt - wusste bisher nicht, dass in diesem Fall der Stack mit den ausgerüsteten Items außen vor gelassen wird und stattdessen ein neuer angelegt wird
 
hallöle xD

nachdem mein 50ter versuch fehlgeschlagen ist und das aktuelle skript
begin Horst

float timer
short lol
if ( MenuMode == 1 )
return
endif

if ( OnActivate == 1 )
if ( lol == 0 )
Set timer to ( timer + GetSecondsPassed )
if ( timer < 3 )
"ACTIVATOR"->MoveWorld z -100
return
set lol to 1
endif
endif
endif

end

so gut wie überhaupt nicht funktioniert (der activator wird ruckartig um 100 editoreinheiten nach unten gebeamt), habe ich mir gedacht dass ich doch euch mal um Hilfe fragen könnte.
Besagter Activator sollte also von dem Z-Wert 581.690 auf den Z-Wert -300.032 langsam heruntergefahren werden, wenn man einen Gegenstand im Inventar bei sich trägt. Der Gegenstand wird dann beim aktivieren entfernt. Sollte man ihn nicht bei sich haben, soll ein Text erscheinen und nichts passiert. Am wichtigsten ist erstmal dass die Bewegung überhaupt zustandekommt, und nicht so ein "wegbeamen" :-D der rest ist optional, aber es wär um es mal umgangssprachlich zu sagen echt geil wenn das auch gehen würde :-D
bling, hab was vergessen, wenn der activator dann quasi im boden verschwindet soll auch eine unsichtbare collision box aus dem spiel entfernt werden.
 
Zuletzt bearbeitet:
@J2W
naja kein Wunder, das sich das Ding bei dir wegbeamt ... nach dem Aktivieren wird das Objekt sofort um 100 Einheiten auf einmal bewegt ... wenn du eine langsamere Bewegung haben willst, dann musst du den MoveWorld-Befehl mit kleineren Schritten in einer Schleife aufrufen und bei jedem Durchgang noch etwas den Timer laufen lassen
 
Erstmal danke für die Antwort,

..aber ich hab doch nen timer drin, oder nicht? müsste das jetzt nicht innerhalb von 3 sekunden 300 runtergehen?
ausserdem wird bei dem moveworld bei mir im spiel der abstand nur minimal gesenkt, ich kann mir nicht vorstellen dass zwischen der z position 581 und z -300 zig tausende editoreinheiten dazwischen sind? ich blick da grad nich durch xD
 
ich glaub die interpretierst das mit dem timer falsch ... dein Skript wird einmal pro Frame aufgerufen, nicht etwa einmal pro Sekunde ... du landest real im Spiel also nicht bei 300, sondern höchstwahrscheinlich bei einer sehr viel größeren Entfernung ... auch deine Shortvariable "lol" versteh ich nicht ganz, denn dein set-Befehl für diese wird niemals aufgerufen - wenn der timer < 3 ist wird vorher abgebrochen (return) und wenn der timer >= 3 ist dann gehst du nicht mehr in die if rein und tust endlos deinen timer inkrementieren