PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche Script , . . .



Pitje
12.03.2011, 03:40
Hallo,

ich habe versucht mich in die Welt der Scripte zu fuddeln, doch das, was ich machen möchte, kann ich mir leider nicht zusammenreimen. Dazu rall' ich das einfach zu wenig.

Deshalb wage ich es eine Bitte zu äußern:

Was ich machen wollte:

Nehmen wir einen Goblin.
Der steht bei Position A (Editor location)
Geht von dort aus zu Position B.
Dort angekommen wird er von einer Wache verkloppt und dankt ab. (das funzt ja mit Fraktion)

Aber jetzt wäre es gut (für das was ich machen will) wenn der gleiche Goblin nach 4 Spielstunden an Position A wieder auftaucht, nach B läuft, dort wieder die Hucke vollkriegt, nach 4 Stunden wieder auftaucht, ... und so weiter.

Hab schon Kopfschmerzen vom Scripts nach eventuell funktionierenden Passagen abzusuchen und bekomme es einfach nicht hin, weil ich dauernd Fehler mache.

Vielen Dank,

Gruß
Pitje

R.F.
12.03.2011, 11:22
Scheinbar hat Oblivion eine eigene Skriptsprache...hast du dir die Syntax von der mal angesehen und ein paar Sachen ausprobiert (also, sodass du damit umgehen kannst)? Wenn du das getan hast, kannst du ja mal ein paar entsprechende Tutorials suchen, oder aber vielleicht im Spiel selbst nach Stellen suchen, in denen ein ähnliches Skript verwendet wurde und das dann als Basis nehmen.

Vielleicht hilft ja auch die Seite hier (http://cs.elderscrolls.com/constwiki/index.php/Main_Page). Ich muss dazu sagen, dass ich keinerlei Erfahrungen mit dem ganzen habe, was aber daran liegt, dass ich vor ner Ewigkeit Oblivion nur mal angespielt und nicht mit dem Konstruktion-Kit gearbeitet habe. ^^'

Pitje
12.03.2011, 11:58
Bleibe natürlich auch selber am Ball und such in den Scripts und auf der Seite.
Muss aber zugeben, dass ich da wohl ... zu dödelig bin oder mich einfach doof anstelle.

Generell will ich 's ja hinbekommen, aber naja... :)

Low Post
12.03.2011, 16:24
Das Script auf den Goblin, dann sollte das eigentlich funktionieren:


scn GoblinScript

float fLastResurrect

Begin Gamemode
if ( GetDead == 0 ) || ( ( GetInSameCell PlayerRef ) == 0 )
Return
endif
if ( GetCurrentTime < ( fLastResurrect + 4 ) ) && ( GetCurrentTime >= fLastResurrect )
Return
endif
Resurrect
MoveTo <unsichtbares Objekt an der Startposition des Goblins>
set fLastResurrect to GetCurrentTime
End

Das laufen und angreifen wird dabei nicht erledigt. Würde ich mittels Packages und Factions lösen.

TiberSeptim
12.03.2011, 19:42
Hey Leute ich schreibs jetzt einfach mal hier rein da es hier ja eh grad um scripts geht. Ich bräuchte ebenfalls ein script das ich ums verrecken einfach nicht zum funktionieren bekomme. Und zwar möchte ich das mein Char sobald er eine bestimmte Zelle betritt (in dem Fall ein Haus) einer Fraktion beitritt.
Aber irgendwie will das nicht so wie ich es gerne hätte. Das textfenster das aufploppen sollte sobald ich den raum betrete, und mich fragt ob ich beitreten will, ploppt nicht auf. Also hab ich anscheinend irgendwas falsch gemacht aber ich weiss nicht was ich machen soll.

Low Post
12.03.2011, 21:19
Activator in der Zelle mit folgendem Script:

scn ActivatorScript

short bQuestion
int iButon

Begin Gamemode
if ( Player.IsInFaction <Fraktion> )
Return
endif
if ( bQuestion )
set iButton to GetButtonPressed
if ( iButton == 0 )
Player.SetFactionRank <Fraktion>, 0
endif
Return
elseif ( GetInSameCell PlayerRef )
set bQuestion to 1
set iButton to GetButtonPressed
MessageBox "Willst du <Fraktionsname> beitreten?", "Ja", "Nein"
endif
End

Funktioniert nur ein mal.
Mehrmalige Frage wird komplizierter. Da dann am besten über OnActivate die MessageBox auslösen.

TiberSeptim
12.03.2011, 21:48
Activator? was für einen Activator? Ich hatte das ungefär so geschrieben glaub ich


If Player.get in Cell <CellID>

Begin Gamemode
if ( Player.IsInFaction <Fraktion> )
Return
endif
if ( bQuestion )
set iButton to GetButtonPressed
if ( iButton == 0 )
Player.SetFactionRank Ritterorden, 0
endif
Return
elseif ( GetInSameCell PlayerRef )
set bQuestion to 1
set iButton to GetButtonPressed
MessageBox "Willst du Großmeister des Ritterordens werden?", "Ja", "Nein"
endif
End

Das war das errste script überhaupt gemacht hab und das ich aus verschiedenen anderen scripts zusammengestückelt habe.

Low Post
12.03.2011, 21:54
Activator? was für einen Activator?

Ein selbst erstellter, dem du das Skript verpasst und von dem du eine Referenz in der betreffenden Zelle plazierst.


Was du hast wäre für ein QuestScript, nur dass du deinen ersten if-Befehl in das Script anstelle des GetInSameCell schieben musst:

scn QuestScript

short bQuestion
int iButon

Begin Gamemode
if ( bQuestion )
set iButton to GetButtonPressed
if ( iButton == 0 )
Player.SetFactionRank <Fraktion>, 0
StopQuest <QuestID>
elseif ( iButton == 1 )
StopQuest <QuestID>
endif
elseif ( PlayerRef.GetInCell <CellID> )
set bQuestion to 1
set iButton to GetButtonPressed
MessageBox "Willst du Großmeister des Ritterordens werden?", "Ja", "Nein"
endif
End

Pitje
16.03.2011, 20:02
Das Script auf den Goblin, dann sollte das eigentlich funktionieren:


scn GoblinScript

float fLastResurrect

Begin Gamemode
if ( GetDead == 0 ) || ( ( GetInSameCell PlayerRef ) == 0 )
Return
endif
if ( GetCurrentTime < ( fLastResurrect + 4 ) ) && ( GetCurrentTime >= fLastResurrect )
Return
endif
Resurrect
MoveTo <unsichtbares Objekt an der Startposition des Goblins>
set fLastResurrect to GetCurrentTime
End

Das laufen und angreifen wird dabei nicht erledigt. Würde ich mittels Packages und Factions lösen.

Ayy...,
Danke schön,Low Post.
Der Goblin (Opfer) watschelt brav los (Package), ereicht sein Ziel, wird verkloppt (Wache mit gegensätzlicher Fraktion), nippelt ab und taucht 4 Stunden später an gleicher Stelle auf, wo dann das nächste Package greift und ...usw.

Jetzt, ohne Vermessen wirken zu wollen, hätte ich da noch stilistische Fragen:
A:
Wenn die Wache den tödlichen Streich ausführt, dann haut sie den Goblin sofort in das digitale Nirvana.
Isses möglich, dass der Goblin noch ein paar Sekunden liegenbleibt und dann verschwindet?

und B:
Wenn ich den Goblin erschlage bleibt er liegen *). Die Sache mit dem Wiederauferstehen klappt da nicht bzw besteht vielleicht kein Bezug auf den Spieler?

(Zur Situation:
Ich wollte die Goblins (2 oder 4) kontinuirlich auf bewachte Barrikaden angehen lassen (so als Hintergrundaktion, damit sich bissle was bewegt auf der Ebene). Und evtl. (wenn ich das mit den Quests mal ralle) als Questobjekt nutzen.)

*)
Für mein Verständnis:
Das Liegenbleiben/nicht resurrect'n) passiert ebenfalls, wenn ich ein Package mit -Any- als Tageszeit benutze.
Fehlt dem Script dann der zeitliche Bezug ?

Low Post
17.03.2011, 00:03
Also prinzipiell sollte der Goblin nicht verschwinden. Und es sollte auch keinen Unterschied machen, wer den Goblin umlegt.
Zumindest hab ich da nichts deswegen gemacht.
Alles was das Script macht, ist wenn der Goblin tot und in der gleichen Zelle wie der Spieler ist und seit dem letzten Wiederbeleben 4 Stunden vergangen sind wird der Goblin wiederbelebt und an seine Startposition zurückgesetzt. Beim ersten mal kann das auch direkt passieren, das erklärt aber trotzdem nicht, warum der Goblin verschwindet.

Oder hab ich da was falsch verstanden?

Pitje
17.03.2011, 21:55
Hi,

hab's grad nochmal angeschaut.
Wenn ich nicht in der gleichen Zelle bin, dann erreicht der Goblin sein Ziel nahe einer der Wachen. Diese haut sie umgehend um. Rein optisch sieht es so aus, als ob ich einen NPC umhaue, wenn die Collision Off ist. Der Goblin verharrt in einer Position.
Wenn ich dann in die Gleiche Zelle komme, dann "plumbst" er zu Boden.
Wenn ich dann 3 Stunden warte ( habe Deine Zeit von 4 Stunden im Script auf 3 gekürzt) ist die "Leiche" weg und der Goblin taucht an der Spawnstelle wieder auf.

Also, was mich angeht, ist das super so.

Kann das mit den vorher beschriebenen Problemen vielleicht daran liegen, dass mein Rechner schon ca 24 Stunden an war ?
Oder sollte man sowas nicht checken, wenn das CS zwar minimiert, aber noch an ist?

Low Post
17.03.2011, 22:03
Gut, dann macht das Script was es soll. :)

Das mit der Totenstarre ist ein Engine-Problem (oder so), da kann ich nichts machen.
Lass es am besten von ein paar Betatestern ausprobieren. Wenn das bei keinem anderen vorkommt dürfte das eine einmalige Sache gewesen sein.

Was mir deswegen noch einfällt wäre, dass der Goblin evtl. durch einen Spalt im Boden gefallen ist. Bei mir sind solche Spalten beim bauen zumindest keine Seltenheit. ;)

Pitje
19.03.2011, 01:50
aha,
werde drauf achten, wenn ich zu den Interiors komme. ;)