Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum

The Elder Scrolls
Arena
Daggerfall
Spin-offs
Romane
Jubiläum
Reviews
Welt von TES
Lore-Bibliothek
Namens-
generator

FRPGs

Elder Scrolls Online
Allgemein
Fraktionen
Charakter
Kargstein
Technik
Tamriel-
Manuskript

Media

Skyrim
Allgemein
Lösungen
Tipps & Tricks
Steam-Kniffe
Review
Media
Plugins & Mods

Oblivion
Allgemein
Lösungen
Tipps & Tricks
Technik
Charakter
Media
Plugins & Mods
Kompendium

Morrowind
Allgemein
Lösungen
Tipps & Tricks
Media
Plugins & Mods

Foren
The Elder Scrolls Online
Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins & Mods

Ältere TES-Spiele
TES-Diskussion
Oblivion-Plugins
Morrowind-Plugins

Community
Taverne zum Shalk
Adventures of Vvardenfell
Tales of Tamriel
Ergebnis 1 bis 14 von 14

Thema: 4 Skripttechnische Fragen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    4 Skripttechnische Fragen

    Hallo, ich habe eine >Idee< für einen Plugin im Kopf, jedoch noch einige Unklarheiten über einzelne Skripts und ähnliches:

    1. Wie euch allen wahrscheinlich bekannt ist gibt es für jeden einzelnen Skill eine Art Counter, der bei jeder Anwendung des Skills ein wenig steigt und sobald dieser den Wert 100 erreicht gibt es einen Skill Up.

    Gibt es skripttechnisch eine Möglichkeit diesen Counter zu modifizieren und zu inkrementieren?

    2. Ich möchte anhand eines Dolches als Basis eine Art Werkzeug machen, ähnlich wie die Dietriche in Morrowind. Das heißt dieses Werkzeug soll keinerlei Schaden machen und auch keine Reaktionen bei Anwendung auf NPCs hervorrufen. Ist das umsetzbar?

    3. Ist es möglich einem Objekt während des Spielverlaufs einen neuen Namen zuzuweisen?

    Beispiel:

    Container "Tonne" Name ändern zu-> Container "Holztonne"

    4. Soweit ich die letzten Monate mitgekriegt habe ist es möglich geworden neue Animationen ins Spiel einzufügen. Geht dies auch bei Waffen? Ist es möglich meinem "Werkzeug", das auf einem Dolch basiert eine neue Animation zuzuweisen?

  2. #2
    1. den skill kann man modifizieren, beim player:
    Code:
    modpcs IdDesSkills DieMenge
    (Die Menge = Zahl die zum aktuellen Sill hinzugefügt wird (abziehen is ne negative zahl)), ABER wenn man das einmal auf den Spieler ausführt kann dieser Skill NICHT mehr durch anwendung verbessert werden! (nur noch durch training oder den befehl)

    2. keinen schaden geht natürlich (damage des items auf 0) aber keine reaktion meines wissens nicht, da diese eigenschaft einer waffe (glaub ich) hardcoded ist (vieleicht würd des mit einem script gehn, aber mir fällt dazu nichts ein), obwohl vieleicht geht es wenn man die Reichweite (Reach) auf null setzt) dann könnte man teoretisch niemanden mehr treffen, aber des heißt auch wirklich nichts (ein skript auf diesem werkzeug zum beispiel könnte auch nicht auf ein ziel ausgeführt werden, da man es ja nicht treffen kann) (noch was: könnte aber auch sein, dass des spiel bei einer solchen einstellung abstürzt, hab da nähmlich schon mal so was bei der reichweite von bögen gehört, aber weiß nicht ob das auch für Nahkampfwaffen gilt)

    3. geht mit einem Kommando für den Oblivion Script Extender, nähmlich:
    Code:
    idDesGegenstands.setname "neuer name"
    Des gilt für Gegenstände die man ins inventar legen kann, genauere beschreibung hier.

    4. Einem Bestimmten gegenstand eine Bestimmte animation zuzuweißen ist nicht möglich, man müsste alle animationen eines typs (zum beispiel normaler angriff mit einer klingenwaffe) ersetzen, des heist der spieler und alle npcs würden mit jeder waffe des typs diese animation ausführen. Es gäbe aber eine Möglichkeit, wenn man dieses Werkzeug nur bei bestimmten Zeitpunkten/Gegenständen (zum beispiel beim aktivieren eines bestimmten activators) zu benutzen in dem man die idle-Animation (in die das Werkzeug eingefügt ist, ähnlich wie die trankflaschen bei alchemieanimationen die manche npcs manchmal ausführen) des spielers manipuliert und wenn nötig den spieler in die richtige position bringt und die idle-animation nach ausführung zurücksetzt. Aber wie des genau geht entzieht sich leider meiner Kenntnis, tut mir leid! Ich weiß nur, dass es geht.
    Geändert von Atoom (16.03.2008 um 23:16 Uhr)

  3. #3
    Könnte man nicht im CS einer Kopie eines Dietrichs die .nif Datei des Dolches zuweisen?
    Weiß aber nicht, wie das dann mit den Animationen hinkommt, und ob das zu dem passt, was du vor hast.

  4. #4
    nein so einfach geht des leider nicht, da es in der nif nicht vorgesehn ist, dass ein dietrich eine waffe ist, dafür fehlen die einstellungen in der nif, des würd sich ähnlich verhalten als wenn du einem kleidungsstück als world model des biped model (des ohne *_gnd.nif) geben würdest. Tut mir aber auch hier leid, wie man des richtig macht weiß ich auch hier nicht genau, da ich bis jetzt selber immer kläglich an NIFScope gescheitert bin.

  5. #5
    Ok, das sieht leider schlecht mit der Umsetzung meiner Idee aus.

    Meine Idee war es Sonden, wie sie aus Morrowind bekannt sind einzuführen, welche ebenso wie in Morrowind hantiert werden, um Fallen zu entschärfen.

    Aber wie es aussieht sind bei dem Leveln eines Skills und dem Einfügen neuer Waffenanimationen starke Grenzen gesetzt, welche es leider unmöglich machen dies umzusetzen. Da muss ich das Konzept leider wieder verwerfen, aber danke für die Hinweise.

  6. #6
    hmm, waffen entschärfen geht doch auch meißtens wenn man nen pfeil auf nen auslöser schießt. Zum ändern des skills, wär aber ne sichere möglichkeit wenn man einfach ne eigenschaft erstellt die den die gewünschte menge auf den skill festigt. den müsste man dan nur noch mit einem script auf dem gegenstand
    Code:
    scn NameDesScripts
    
    begin onadd player
    	player.addspell IdDerEigenschaft
    end
    
    begin ondrop player
    	player.removespell IdDerEigenschaft
    end
    (läuft wenn er inventar kommt).
    Geändert von Atoom (17.03.2008 um 20:12 Uhr)

  7. #7
    Zitat Zitat von Invidious Beitrag anzeigen
    Hallo, ich habe eine >Idee< für einen Plugin im Kopf, jedoch noch einige Unklarheiten über einzelne Skripts und ähnliches:

    1. Wie euch allen wahrscheinlich bekannt ist gibt es für jeden einzelnen Skill eine Art Counter, der bei jeder Anwendung des Skills ein wenig steigt und sobald dieser den Wert 100 erreicht gibt es einen Skill Up.

    Gibt es skripttechnisch eine Möglichkeit diesen Counter zu modifizieren und zu inkrementieren?
    Also: der Counter geht nicht bis 100, sondern bis zu einem Wert, der sich je nach Skilllevel nach einer folgender Formel berechnet:
    Code:
    [fSkillUseSpecMult] * [fSkillUseMinor/MajorMult] * ( [fSkillUseFactor] * Skill ) ^ [fSkillUseExp]
    Bei Benutzung wird der "Counter" dann um einen best. Anzahl erhöht (SkillUseIncrement).
    Diesen Wert kann man mit SetSkillUseIncrement beeinflussen. Den aktuellen Wert erhält man mit GetSkillUseIncrement (für temporäre Beeinflussung, um den Standartwert nachher wieder herstellen zu können).
    Den aktuellen Wert des "Counters" erhält man mit GetPlayerSkillUse, beeinflussen (Steigern um x SkillUseIncrements) kann man ihn mit IncrementPlayerSkillUse.
    ACHTUNG: alles OBSE-Befehle

    Um einen Skill direkt zu beeinflussen würde ich SetActorValue empfehlen, da ModActorValue (bzw. PC) einige Probleme hat.

    Zitat Zitat von Invidious Beitrag anzeigen
    2. Ich möchte anhand eines Dolches als Basis eine Art Werkzeug machen, ähnlich wie die Dietriche in Morrowind. Das heißt dieses Werkzeug soll keinerlei Schaden machen und auch keine Reaktionen bei Anwendung auf NPCs hervorrufen. Ist das umsetzbar?
    Höchstens über eine Verzauberung mittels StopCombat & ModCrimeGold.
    Wichtig wäre bei dem ModCrimeGold außerdem, über das GameSetting zu arbeiten welches die Strafe für einen einfachen Angriff bestimmt.

    Zitat Zitat von Invidious Beitrag anzeigen
    3. Ist es möglich einem Objekt während des Spielverlaufs einen neuen Namen zuzuweisen?

    Beispiel:

    Container "Tonne" Name ändern zu-> Container "Holztonne"
    SetActorFullName

    ACHTUNG: Ändert den Namen des Base Objects, d.h. dass alle Referenzen davon ab sofort so heißen. Um nur eine Referenz zu beeinflussen verwende die OBSE-Funktion SetName (bzw. ModName/CopyName/AppendToName)

    Zitat Zitat von Invidious Beitrag anzeigen
    4. Soweit ich die letzten Monate mitgekriegt habe ist es möglich geworden neue Animationen ins Spiel einzufügen. Geht dies auch bei Waffen? Ist es möglich meinem "Werkzeug", das auf einem Dolch basiert eine neue Animation zuzuweisen?
    Nur generell für alle. Für eine Waffe ist nur eine Animation möglich, die die ganze Zeit abgespielt wird.

  8. #8
    Danke, das hilft mir schon sehr weiter, aber zum Umbenennen eines Objekts mit SetName:

    im CS-Wiki steht folgendes:

    Zitat Zitat
    (nothing) reference.SetName "name:string" objectID:ref
    Wofür steht das objectID:ref?

    Wenn ich es mit diesem hier versuche:

    Zitat Zitat
    myself.SetName "Name"
    bekomme ich einen Kompilierfehler wegen einer unbekannten Referenz. Was soll ich bei der "objectID:ref" schreiben?

  9. #9
    Wie die meisten OBSE-Funktionen ist (wahrscheinlich) auch SetName für einen Gebrauch mit Referenz-, als auch mit Object-ID ausgelegt.
    Code:
    [Ref-Variable, Referenz].SetName "Name"
    sollte genauso funktionieren, wie
    Code:
    SetName "Name" [Ref-Variable, Base Object]

    Wenn beides bereitgestellt wird, also z.B.:
    Code:
    [Ref-Variable, Referenz].SetName "Name" [Ref-Variable, Base Object]
    sollte das Base Object "gewinnen", es würde also so wirken als ob die Referenz gar nicht angegeben wurde.

    Ergo: ObjectID:ref kannst du einfach weglassen.



    Bei dir sollte das Problem allerdings darin liegen, dass du myself nicht als Variable definiert hast.
    Dazu schreibst du irgentwo vor das SetName (ich würde den Anfang des Script nach dem scn und dem ersten Begin-Block empfehlen, jeweils mit Leerzeilen abgegrenzt) einmal ref myself.
    Damit das ganze auch funktioniert muss noch irgentwo vor das SetName-Kommando hin: set myself to GetSelf ;(zumindest solange dass ein ObjectScript auf dem gewünschten Object ist).


    Zeig mal dein ganzes Script, dann geht die Fehlersuche eigentlich um einiges leichter.

  10. #10
    Danke für den Hinwies, ich hatte für die myself-Variable versehentlich den Datentyp short anstatt ref gewählt.

    Mir ist jedoch gerade aufgefallen, dass die SetName-Funktion anscheinend einen schweren Fehler hat:
    Ändere ich den Namen eines Objektes zB. von "Name1" auf "Name2" funktioniert dies problemlos, lade ich danach meinen Spielstand neu wird immer noch "Name2" angezeigt.

    Lässt sich dieser Fehler irgendwie verhindern? So wäre die Funktion ansonsten nicht für mich zu gebrauchen.

  11. #11
    Wie neuladen?

    Einen Spielstand, wo du den Dateinamen noch nicht geändert hast?

    Falls ja, versuch mal Oblvion zu beenden und erst nach einem Neustart den Save zu laden, dann sollte der Name wieder der alte sein.
    Sollte das aber wirklich der Fall sein würde ich dir empfehlen, das im OBSE-Thread zu melden damit der Bug behoben werden kann.

  12. #12
    So, neue Frage:

    Ich würde gerne die ID von Creatures per Skript abprüfen, zB

    Ist die target-Creature vom Typ "CreatureBearBlack"? oder
    Ist die target-Creature vom Typ"CreatureRat"?

    Gibt es dafür eine passende Funktion? Ich habe gerade im CS-Wiki nachgeforscht, konnte aber leider nichts passendes finden.

  13. #13
    um was für eine art von ziehl geht es? bei einem Zauber wärs ganz einfach:
    Code:
    scn targetspellSCRIPT
    
    ref myself
    
    begin scripteffectstart
    	set myself to getself
    	if myself == idDerKreatur
    		;hier kommt des rein was dann passiern soll
    	endif
    end
    (des script muss dan ein magic effect sein)

    Oder bei einem Trigger:
    Code:
    scn targettriggerSCRIPT
    
    ref myself
    ;short triggered
    
    begin ontrigger
    	;if triggered == 0 ;dieser block (und die variable oben) wird benötigt,
    		;set triggered to 1 ;wenn des Script was bei der richtigen Kreatur nur ein mal ausgeführt werden soll
    		set myself to getactionref
    		if myself == idDerKreatur
    			;hier kommt des rein was dann passiern soll
    		endif
    	;endif
    end
    Geändert von Atoom (22.03.2008 um 15:55 Uhr) Grund: uups, return vergessen

  14. #14
    Wenn du eine Referenz überprüfen willst kannst du das Script von Atoom verwenden (auch wenn ich da eher GetIsReference verwenden würde).


    Wenn du aber das BaseObject überprüfen willst kannst du das mittels GetIsID tun (oder du nimmst Atooms Script und gehst den Umweg über GetBaseObject).

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •