Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
GetHealth ist aber keine Variable, sondern eine Funktion. Und Funktionen werden mit dem Pfeil aufgerufen.
Der Befhel müsste genauso aussehen, wie Kallor geschrieben. Allerdings würde ich eine andere Variante bevorzugen. Die Barriere sollte reference persistent sein, dann kannst du sie vom Gegner aus eleminieren:
Nun brauche ich eine Vorlage für diverse scripts, welche abfragen sollen, ob eine bestimmte kreatur einen bestimmten zauber gewirkt hat. Am liebsten wäre es mir, wenn ich das jeweils über das script der Kreatur regeln könnte(natürlich nur wenns das ganze nicht zu sehr verkompliziert). Also, wenn kreatur xx zauber yy wirkt soll zz passieren (zusätzlich zum zaubereffekt)
Hab nun herausgefunden, wie ich die Zauberabfrage machen muss, nämlich mit getspelleffects. nun habe ich aber zwei weitere Probleme:
Der Daedroth soll nach Wirken eines Zaubers sechs Minen beschwören, ähnlich wie die von der Verrückten in Gramfeste. Nun, die Minen haben fehlerhaftes Aussehen (rotes Schimmern, statt Dwemerdetektoren) und reagieren nicht auf mich. Ach ja und der explodespell des Daedroths geht immer noch nicht.
Script des daedroths:
Code:
begin boHe_ar_daedrothfire_script
short state
if ( state == 0 )
if ( getdistance, player < 1024) ; füge den gewünschten Wert hier ein.
ExplodeSpell, "BoHe_ar_daedroth_fireball"
set state to 1
set fight to 100
endif
endif
if ( state == 1 )
if ( "BoHe_ar_daedrothfire"-> GetSpellEffects "bohe_ar_daedrothspell" == 1 )
set BoHe_ar_daedrothfire_spellcast to 1
set state to 2
endif
endif
if ( ondeath == 1 )
"BoHe_ar_kraftfeld1"->disable
endif
end
BoHe_ar_daedrothfire_spellcast ist eine globale
script der minen:
Code:
begin bohe_feuermine01script
short state
if ( state == 0 )
disable
set state to 1
endif
if ( state == 1 )
if ( bohe_ar_daedrothfire_spellcast == 1 )
set state to 2
enable
endif
endif
if ( state == 2 )
if ( getdistance, player < 512 )
explodespell "bohe_ar_daedroth_fireball"
set state to -1
disable
endif
endif
end
Das war problem 1
Problem 2 ist, dass ich beim betreten der zelle diese fehlermeldung bekomm: Creature "bohe_ar_erdwall00000000" has no animation groups.
Morrowind will crash!
Die bedeutung der fehlermeldung ist mir klar, nur soll die Erdwand (mesh: x\terrain_volcano.nif) eben gar keine animation sein, es ist nur ein überdimensionierter felsklotz, welcher den weg versperrt und nach dem "sterben" verschwinden soll. für die dies interessiert noch das script:
Code:
begin bohe_ar_erdwall_script
short state
if ( state == -1 )
return
endif
if ( state == 0 )
disable
set state to 1
endif
if ( state == 1 )
if ( "bohe_ar_ogrimearth_spellcast" == 1 )
enable
set state to 2
endif
endif
if ( state == 2 )
if ( ondeath == 1 )
disable
set state to -1
endif
endif
end
Neues problem:
bisher hab ich die erdwand noch nicht zum einsatz kommen lassen, doch der ogrim, der sie beschwört (als schutzwand) macht auch nicht was er soll:
Ich hab ihm einen lastspruch (99999 Stärke, immer aktiv) gegeben, doch der läuft einfach weiter...
Noch eine frage: ist es möglich, dass ein objekt UNTER dem player erscheint.
Der Ogrim hat drei spezielle eigenschaften:
1. Er kann sich nicht bewegen (klappt nicht)
2. Er kann eine erdwand beschwören (kreatur mit volcanomesh, bringt fehlermeldung)
3. Nachdem er einen zauber gewirkt hat, soll alle 5 sekunden ein stalakmit unter dem player spawnen und nach oben fahren (aus dem boden raus) Z koordinate ist dabei immer die gleiche, x und y müssen denen des players entsprechen. Nach erscheien fahren die Stalakmiten nach oben (das bring ich hin, keine angst^^) und ausserdem sind sie mit einem HurtCollidingActor, 50 script ausgestattet (machbar?)
1. ExplodeSpell funktioniert nur mit Activatoren. Verwende die Funktion Cast. und gib als Ziel den aufrufenden Daedroth an.
2. Lege ihm statt dem Lastzauber ein Item mit gigantischem Gewicht ins Inventar und entferne es, wenn er stirbt, damit es der Spieler nicht findet.
3. Natürlich ist das möglich. Die Position des Spielers bekommst du mit "Player"->GetPos, X (bzw. Y und Z) raus. Damit kannst du die Startposition des Stalagmits berechnen und ihm mit PlaceItem an dieser Stelle platzieren. Dort übernimmt das ein Bewegungs- und Schadensscript auf dem Stalagmit selbst.
So, weiter gehts:
Ist es möglich, dem spieler sein gesamtes Inventar wegzunehmen und es in einem Container zu verstauen (dieser befindet sich in der gleichen Zelle wie der Spieler).
Alternativ auch:
Alles unequippen (wie mans auch immer schreibt) und Inventarmenü sperren.
Da muss ichs (leider) etwas genauer haben:
NAgenommen, ich hab einen schild ausgerüstet, der mir 50 Punkte Feder, 10 Punkte Stärke festigen und 5 Punkte Feuerschild gibt, also insgesamt +100 auf die tragkraft. Wenn ich jetzt RemoveEffects für diese beiden effekte mache, was passiert dann?
Hi, ich bräuchte 3 zusammenhängende Scripts für 2 NPCs und einen "unsichtbaren" Gegenstand. Das ganze sollte dann so funktionieren:
wenn NPC1 den unsichtbaren Gegenstand berührt (oder durch läuft) soll er von NPC2 angegriffen werden. es wird aber viele NPC1 und viele NPC2 geben und wenn nur einer der NPC1 den Gegenstand berührt, soll er von allen NPC2 angegriffen werden
ich wäre euch sehr dankbar wenn ihr mir helfen könntet
start skirmish_script
if ( GetDistance, "NPC1" <= 100 ) ; du müsstest noch mit dem Wert rumprobieren was am besten passt
"NPC2"->StartCombat, "NPC1" ; bewirkt, dass alle mit der ID "NPC2" alle "NPC1" angreifen
endif
Der Script müsste auf dem unsichtbaren Objekt liegen. Vielleicht müssen die verschiedenen NPC's auch noch verschiedene Fraktionen haben, musst du ausprobieren.
Wenn du willst, dass nur ein NPC1 engegriffen wird, musst du ihm eine seperate ID geben. Ansonsten ist es das gleiche.
Das wird nicht klappen. Du musst jedem NPC1 eine eigene ID geben und ihn Corpse Persist machen (glaub ich). Dann musst du auf jeden abfragen. So sähe es bei je zwei NPC1 und NPC2 aus:
Code:
begin scriptname
short state
;state ist 0 wenn keiner bekämpft wird, 1 wenn NPC1_01 bekämpft wird, 2 wenn NPC1_02 bekämpft wird usw.
if ( state == 0 )
if ( GetDistance "NPC1_01" <= 100 ) ;ca. 1 Meter
if ( "NPC1_01" -> OnDeath == 0 ) ;verhindert, dass das script auf Tote reagiert
"NPC2_01" -> setfight 100
"NPC2_01" -> startcombat "NPC1_01"
"NPC2_02" -> setfight 100
"NPC2_02" -> startcombat "NPC1_01"
set state to 1
endif
endif
if ( GetDistance "NPC1_02" <= 100 ) ;ca. 1 Meter
if ( "NPC1_02" -> OnDeath == 0 ) ;verhindert, dass das script auf Tote reagiert
"NPC2_01" -> setfight 100
"NPC2_01" -> startcombat "NPC1_02"
"NPC2_02" -> setfight 100
"NPC2_02" -> startcombat "NPC1_02"
set state to 2
endif
endif
elseif ( state == 1 )
if ( "NPC1_01" -> OnDeath == 1 )
"NPC2_01" -> setfight 30
"NPC2_02" -> setfight 30
endif
elseif ( state == 2 )
if ( "NPC1_02" -> OnDeath == 1 )
"NPC2_01" -> setfight 30
"NPC2_02" -> setfight 30
endif
endif
end
Möglicherweise können die NPC2 auch alle die gleiche ID haben, die NPC1 müssen jedoch Unique sein
Stimmt "SetFight" und "OnDeath" habe ich ganz vergessen... aber eine Verständnisfrage von mir: Warum müssen die NPC's alle unique sein?
Würde das Script nicht auf etwas reagieren, dass "mehrere" ist?
Denn wie ich das verstanden habe, will Cody doch nur, dass wenn NPC1 nahe kommt, NPC2 diese angreift. Da müsste theoretisch doch eine ID reichen.
Ganz sicher bin ich mir auch nicht, aber ich glaube, das game würde crashen, wenn ein NPC zwei oder mehere NPC's angreifen will. Sicher bin ich mir aber nicht.
Ausserdem hab ICH Cody so verstanden, dass die NPC2's "Wächter" sind und die NPC1 "Angreifer".
Die Wächter ignorieren die Angreifer solange, bis sie nichts "böses" getan haben, aber wenn einer etwas "böses" tut, wird er zerstückelt.
ja NPC1 sind sklaven, und wenn die ihren bereich verlassen (durch eine kleine tür wo das unsichtbare objekt ist) werden sie von den wachen platt gemacht
//EDIT: kann ich den sklaven auch ein script geben, dass sie "zufällig" auf einen bestimmten punkt (oder ein anderes unsichtbares objekt außerhalb ihres "gefängisses") zu laufen?
//EDIT2: ich hab hier mal mit einem Kampf zwischen imperialen angreifern und hlaalu-verteidigern rum gespielt und mir da ein script von ald daedroth als vorbild genommen, aber die schützen tun nix und bei den nahkämpfern funktioniert das script einwand frei:
begin fightImperialEliteArcher
short counter
Short NoLore
short doonceA1
short doonceA2
short doonceA3
short doonceA4
short doonceA5
short doonceA6
short doonceA7
short doonceA8
short doonceB
if ( CellChanged == 0 )
Return
endif
if ( counter < 20 )
Set counter to counter + 1
Return
;for speed...
endif
Set counter to 0
if ( doonceA1 < 3 )
if ( GetDeadCount "Necrom guard1" == 0 )
if ( GetDistance "Necrom guard1" < 1000 )
StartCombat "Necrom guard1"
set doonceA1 to 1
endif
endif
endif
if ( doonceA2 < 3 )
if ( GetDeadCount "Necrom guard2" == 0 )
if ( GetDistance "Necrom guard2" < 1000 )
StartCombat "Necrom guard2"
set doonceA2 to 1
endif
endif
endif
if ( doonceA3 < 3 )
if ( GetDeadCount "Necrom guard3" == 0 )
if ( GetDistance "Necrom guard3" < 1000 )
StartCombat "Necrom guard3"
set doonceA3 to 1
endif
endif
endif
if ( doonceA4 < 3 )
if ( GetDeadCount "Necrom guard4" == 0 )
if ( GetDistance "Necrom guard4" < 1000 )
StartCombat "Necrom guard4"
set doonceA4 to 1
endif
endif
endif
if ( doonceA5 < 3 )
if ( GetDeadCount "Necrom guard5" == 0 )
if ( GetDistance "Necrom guard5" < 1000 )
StartCombat "Necrom guard5"
set doonceA5 to 1
endif
endif
endif
if ( doonceA6 < 3 )
if ( GetDeadCount "Necrom guard6" == 0 )
if ( GetDistance "Necrom guard6" < 1000 )
StartCombat "Necrom guard6"
set doonceA6 to 1
endif
endif
endif
if ( doonceA7 < 3 )
if ( GetDeadCount "Necrom slave-guard1" == 0 )
if ( GetDistance "Necrom slave-guard1" < 4000 )
StartCombat "Necrom slave-guard1"
set doonceA7 to 1
endif
endif
endif
if ( doonceA8 < 3 )
if ( GetDeadCount "Necrom elite-guard1" == 0 )
if ( GetDistance "Necrom elite-guard1" < 4000 )
StartCombat "Necrom elite-guard1"
set doonceA8 to 1
endif
endif
endif
if ( doonceB < 3 )
if ( GetDeadCount "Necrom Guard-Sniper" > 0 )
if ( GetDistance "Necrom Guard-Sniper" < 400 )
StartCombat "Necrom Guard-Sniper"
set doonceB to 1
endif
endif
endif
end fighImperialEliteArcher
begin fightImperialEliteSoldier
short counter
Short NoLore
short doonceA1
short doonceA2
short doonceA3
short doonceA4
short doonceA5
short doonceA6
short doonceA7
short doonceA8
short doonceB
;if ( CellChanged == 0 )
; Return
;endif
if ( counter < 20 )
Set counter to counter + 1
Return
;for speed...
endif
if ( doonceA1 < 3 )
if ( GetDeadCount "Necrom guard1" == 0 )
if ( GetDistance "Necrom guard1" < 400 )
StartCombat "Necrom guard1"
set doonceA1 to 1
endif
endif
endif
if ( doonceA2 < 3 )
if ( GetDeadCount "Necrom guard2" == 0 )
if ( GetDistance "Necrom guard2" < 400 )
StartCombat "Necrom guard2"
set doonceA2 to 1
endif
endif
endif
if ( doonceA3 < 3 )
if ( GetDeadCount "Necrom guard3" == 0 )
if ( GetDistance "Necrom guard3" < 400 )
StartCombat "Necrom guard3"
set doonceA3 to 1
endif
endif
endif
if ( doonceA4 < 3 )
if ( GetDeadCount "Necrom guard4" == 0 )
if ( GetDistance "Necrom guard4" < 400 )
StartCombat "Necrom guard4"
set doonceA4 to 1
endif
endif
endif
if ( doonceA5 < 3 )
if ( GetDeadCount "Necrom guard5" == 0 )
if ( GetDistance "Necrom guard5" < 400 )
StartCombat "Necrom guard5"
set doonceA5 to 1
endif
endif
endif
if ( doonceA6 < 3 )
if ( GetDeadCount "Necrom guard6" == 0 )
if ( GetDistance "Necrom guard6" < 400 )
StartCombat "Necrom guard6"
set doonceA6 to 1
endif
endif
endif
if ( doonceA7 < 3 )
if ( GetDeadCount "Necrom slave-guard1" == 0 )
if ( GetDistance "Necrom slave-guard1" < 4000 )
StartCombat "Necrom slave-guard1"
set doonceA7 to 1
endif
endif
endif
if ( doonceA8 < 3 )
if ( GetDeadCount "Necrom elite-guard1" == 0 )
if ( GetDistance "Necrom elite-guard1" < 4000 )
StartCombat "Necrom elite-guard1"
set doonceA8 to 1
endif
endif
endif
if ( doonceB < 3 )
if ( GetDeadCount "Necrom Guard-Sniper" == 0 )
if ( GetDistance "Necrom Guard-Sniper" < 400 )
StartCombat "Necrom Guard-Sniper"
set doonceB to 1
endif
endif
endif
end fightImperialEliteSoldier
Begin fightNecromGuard
short counter
short doonceA
short doonceA2
short doonceA3
short doonceA4
short doonceA5
short doonceA6
short doonceA7
short doonceB
short doonceB2
short doonceB3
short doonceB4
short doonceB5
Short NoLore
;if ( CellChanged == 0 )
; Return
;endif
if ( counter < 20 )
Set counter to counter + 1
Return
;for speed...
endif
Set counter to 0
if ( doonceA < 3 )
if ( GetDeadCount "Imperial elite-soldier" == 0 )
StartCombat "Imperial elite-soldier"
Set doonceA to 1
endif
endif
if ( doonceA2 < 3 )
if ( GetDeadCount "Imperial elite-soldier2" == 0 )
StartCombat "Imperial elite-soldier2"
Set doonceA2 to 1
endif
endif
if ( doonceA3 < 3 )
if ( GetDeadCount "Imperial elite-soldier3" == 0 )
StartCombat "Imperial elite-soldier3"
Set doonceA3 to 1
endif
endif
if ( doonceA4 < 3 )
if ( GetDeadCount "Imperial elite-soldier4" == 0 )
StartCombat "Imperial elite-soldier4"
Set doonceA4 to 1
endif
endif
if ( doonceA5 < 3 )
if ( GetDeadCount "Imperial elite-soldier5" == 0 )
StartCombat "Imperial elite-soldier5"
Set doonceA5 to 1
endif
endif
if ( doonceA6 < 3 )
if ( GetDeadCount "Imperial elite-soldier6" == 0 )
StartCombat "Imperial elite-soldier6"
Set doonceA6 to 1
endif
endif
if ( doonceA7 < 3 )
if ( GetDeadCount "Imperial elite-soldier7" == 0 )
StartCombat "Imperial elite-soldier7"
Set doonceA7 to 1
endif
endif
if ( doonceB < 3 )
if ( GetDeadCount "imperial elite-archer" == 0 )
if ( GetDistance "imperial elite-archer" < 400 )
StartCombat "imperial elite-archer"
Set doonceB to 1
endif
endif
endif
if ( doonceB2 < 3 )
if ( GetDeadCount "imperial elite-archer2" == 0 )
if ( GetDistance "imperial elite-archer2" < 400 )
StartCombat "imperial elite-archer2"
Set doonceB2 to 1
endif
endif
endif
if ( doonceB3 <3 )
if ( GetDeadCount "imperial elite-archer3" == 0 )
if ( GetDistance "imperial elite-archer3" < 400 )
StartCombat "imperial elite-archer3"
Set doonceB3 to 1
endif
endif
endif
if ( doonceB4 < 3 )
if ( GetDeadCount "imperial elite-archer4" == 0 )
if ( GetDistance "imperial elite-archer4" < 400 )
StartCombat "imperial elite-archer4"
Set doonceB4 to 1
endif
endif
endif
if ( doonceB5 < 3 )
if ( GetDeadCount "imperial elite-archer5" == 0 )
if ( GetDistance "imperial elite-archer5" < 400 )
StartCombat "imperial elite-archer5"
Set doonceB5 to 1
endif
endif
endif
Wenn du jemanden zu einem bestimmten Punkt reisen lassen willst, bräuchtest du die Funktion "AITravel".
"Actor_ID"->AITravel, xpos, ypos, zpos[, reset]
Der aufrufende Actor geht zur angegebenen Position in der aktuellen Zelle. Die angegebene Position muss über Pathgrids mit seiner aktuellen Position verbunden sein und die Entfernung sollte nicht zu groß gewählt werden. [...] Beispiel:
Code:
[LEFT]begin something_script[/LEFT]
[LEFT]short doonce[/LEFT]
[LEFT]if ( doonce == 0 )
set doonce to 1
AITravel, -628, -1080, -754e
endif[/LEFT]
end
Könntest du deine restlich geposteten Scripts bitte vernünftig einrücken? Das würde ungemein helfen, denn so wie es jetzt ist kann ich schwerlich etwas daraus lesen
Zufällig reisen. Aha. Soll der punkt wirklich ganz total zufällig sein? Das geht soweit ich weiss nicht, wegen den pathgrids. ehrlich gesag hab ich keine Ahnung, wie man sich die anzeigen lassen kann. Aber wenn du dir die Pathgridpunktepositionen aufschreibst, kannst du einen auslosen lassen, etwa so:
Code:
float rand
set rand to Random 100
if ( rand < 33.33 )
AITravel zielpunkt1
elseif ( rand < 66.66 )
AITravel zielpunkt2
else
AITravel zielpunkt3
endif