Suche Maske für weitere Identität

TrunX

Neuankömmling
Ich hab erst neulich das erste mal mit Oblivion angefangen und spiele nun eine Assassine.
Bisher bin ich nur in der Diebesgilde, will mich aber auch möglichst bald parallel auch der dunklen Bruderschaft anschließen.
Da man da ja vermutlich viele Attentate begehen muss und dadurch die Infanie steigt und man laut der Diebesgilde auch niemanden töten darf, wäre eine Maske die einem eine zweite Identität ermöglich sehr praktisch.

Ich hab bereits von der grauen Kutte der Nacht gelesen, die man erhält, wenn man die Diebesgildenquests alle absolviert. Die scheint genau deis zu tun, aber bis dahin isses wohl noch n lagner weg, will vohrer schon Attentate begehen.

Gibts bereits n PI, dass eine Maske mit ähnlichen Eigenschaften wie der grauen Kuttte zur Verfügung stellt?

Kurz gesagt bräuchte ich etwas, dass mir in Sachen Kopfgeld und Infanie eine zweite Identität verschafft und wenn es so sein sollte, dass man nach einem Mord sofort aus der Diebesgilde fliegt auch dies verhindert.

(Gesucht habe ich schon etwas ausführlicher aber nichts gefunden)

Wenns noch nichts dergleichen gibt, wäre es ne große Herasuforderung die graue Kutte einfach zu kopieren und das Modell auszutauschen? Hab das CS noch net runtergeladen.
 
Also, du kannst die Leute bei den Quest von der Dunklen Bruderschaft töten, man verstößt gegen die Regeln nicht.
Aber noch eine Maske, wie die Graue Kutte der Nacht, habe ich nicht gesehen.
 
So eine Maske ist zwar eine tolle idee, aber man braucht sie für die beiden Gilden nicht du kannts sogar in aller Gilde gehen und auch alle um schluss "besitzten"
 
Reneers Guard Overhaul verbessert das Wachensystem und fügt Kleidung ein, mit der du z.B. als Bettler einen Mord begehst, dann fliehst und dann z.B. Adligenkleidung anziehst und dein Kopfgeld ist weg. Es gibt hier im Forum eine Übersetzung, such doch mal (Sorry, bin unter Zeitdruck).
 
  • Like
Reaktionen: 1 Person
Hab mir nun das Construction Set runtergeladen und mir die graue Kutte der Nacht näher angeschaut. Das Script ist leicht zu verstehen und ich hab ein paar Zeilen entfernt, die dafür sorgten, dass immer ein Mindestmaß an Kopfgeld und Infatie vorhanden waren:
Code:
ScriptName AssamaskScript

Float AMCrimeGold
Float AMInfamy
Float AMFame

Float PCCrimeGold
Float PlayerInfamy
Float PlayerFame

Float TempCrime

Begin OnEquip Player
    If GetPlayerInSEWorld == 0
        Set PCCrimeGold to Player.GetCrimeGold
        Player.SetCrimeGold AMCrimeGold    
    EndIf
    Set PlayerFame to GetPCFame
    SetPCFame AMFame

    Set PlayerInfamy to GetPCInfamy
    SetPCInfamy AMInfamy
End

Begin OnUnequip Player
    If GetPlayerInSEWorld == 0
        Set AMCrimeGold to Player.GetCrimeGold
        Player.SetCrimeGold PCCrimeGold
    EndIf
    Set AMFame to GetPCFame
    SetPCFame PlayerFame

    Set AMInfamy to GetPCInfamy
    SetPCInfamy PlayerInfamy
End

Begin GameMode
    If GetPlayerInSEWorld == 0
        If SECrime.LeftSECowlOn == 1
            If SECrime.EnteredSECowlOn == 0
                ; duplicate equipping the cowl if the player didn't have it on when he entered SE, but has it on when he leaves

                Set PCCrimeGold to Player.GetCrimeGold
                Player.SetCrimeGold AMCrimeGold    

                Set SECrime.LeftSECowlOn to 0
            EndIf
        EndIf

        If SECrime.LeftSECowlOn == 0
            If SECrime.EnteredSECowlOn == 1
                ; duplicate unequipping the cowl if the player had it on when he entered SE, but not on when he leaves
                Set AMCrimeGold to Player.GetCrimeGold
                Player.SetCrimeGold PCCrimeGold
                Set SECrime.EnteredSECowlOn to 0
            EndIf
        EndIf
    EndIf
End
Nun Frage ich mich ob es Probleme geben könnte, wenn man diese Maske an hat und dann auf die originale graue Kutte wechselt oder umgekehrt.
Ich glaub es sollte einwandfrei funktionieren, wenn das OnUnequip-Event der vorherigen Maske vor dem OnEquip-Event der neuen Maske ausgeführt wird. Die Reihenfolge erscheint mir auch logisch, aber ist dies auch tatsächlich der Fall? Wenn nicht, dann würde man nach dem ausziehen der zweiten maske das Kopfgeld der ersten Maske haben obwohl man diese nicht trägt.
Zudem Frage ich mich ob die Variablen mit einem Anfangswert initialisiert werden müssen oder ob da automatisch 0 zugewiesen wird.
Natürlich lässt sich dies durch ausprobieren rausfinden, hab jetzt aber leider keine Zeit zwischen CS und dem Spiel hinundher zu springen. Werd ich aber wohl Morgen sowieso machen müssen, wäre aber gut es schon vorher zu wissen.

Dann bräuchte ich natürlich noch ein passendes mesh und icon. In der Ressourcensammlung habe ich nur eine Maske gefunden, die aber überhaupt nicht nach meinem Geschmack ist. Eine Schwarzes Tuch vor Mund und Nase wäre glaub ich am passendsten.

Ahja, theoretisch könnte ich auch dei Anzahl der Ermordeten NPCs für die Maske seperat in der Statistik aufführen, aber macht das Sinn? Gibt es irgendwelche negativen oder auch positiven (im Bezug auf die Bruderschaft) Folgen, die von der Anzahl ermordeter NPCs abhängen oder hängts da nur von der Infamie ab?

Bedanke mich für Antworten.
 
Abgesehen von dem letzten GameMode Block sollte es da eigentlich keine Probleme geben.
Soweit ich das sehe benutzen die Skripte ganze normale Variablen, um die Werte zu Speichern.
Float AMCrimeGold
Float AMInfamy
Float AMFame
hießen diese werte im originalskript auch schon so oder hast du die geändert?
Wenn du die Werte geändert hast sollte es da definitiv keine Probleme geben.
Einzig bei dem letzten Gamemodeblock bin ich mir jetzt grade nicht ganz sicher, da der mit dem Quest SECrime interagiert und auf questvariablen zurückgreift.

Ich glaub es sollte einwandfrei funktionieren, wenn das OnUnequip-Event der vorherigen Maske vor dem OnEquip-Event der neuen Maske ausgeführt wird.
auch wenn du die masken wechseln würdest ohne eine vorher von hand abzulegen, findet automatisch ein unequip statt und somit wird auch der block im skript ausgeführt. da musst du dir keine sorgen machen.

mfg takbir
 
Du kannst auch Morde begehen wenn du in der Diebesgilde bist .
Du wirst nur rausgeworfen wenn du jemanden während einer Diebesgildenmission tötest . Sonst kann man einfach fröhlich weitermorden . Mein Charakter Chezidek hat zum Beispiel 186 Npcs umgebracht(Hab recht lange gespielt und Crowded Cities und Roads drauf ) ohne das er aus der Diebesgilde rausgeworfen wurde . Als ich dann aber während einer Diebesgildenmission jemanden umgebracht hab wurde ich rausgeworfen und musste ein bisschen Gold zahlen um wieder in die Diebegilde zu kommen . Wenn du es atmosphärischer magst ist Reneers Guard Overhaul eine gute Lösung . Leider funktioniert dieses Plugin nicht mit Oblivion Improved , RAFOO oder OOO zusammen . Falls du aber keins der genannten Overhauls benutzt und darauf bestehst eine 2te Identität zu haben kann ich das Plugin nur empfehlen .


Greez Colakarim
 
Zuletzt bearbeitet von einem Moderator:
auch wenn du die masken wechseln würdest ohne eine vorher von hand abzulegen, findet automatisch ein unequip statt und somit wird auch der block im skript ausgeführt. da musst du dir keine sorgen machen.

mfg takbir
Hab mir nun eine Mod mit einer eigenen Maske gemacht und meine Sorgen waren berechtigt.
Es wird erst das Equip-Event der neuen Maske ausgeführt und erst anschließend das Unequip-Event der alten Maske
Dadurch geraten die Ruhm, Infamie und Kopfgeldwerte total durcheinander, wenn man von einer Maske auf die andere wechselt.
Weiß da jemand Abhilfe?
 
Hmm wieso wundert mich das jetzt irgendwie nicht, dass die Engine so verkorkst arbeitet?

Also zwei Lösungsvorschläge hätte ich.

1. Wenn du die Masken switchen willst, dann musst du halt vorher dran denken, die im Moment getragene erst per Hand abzulegen und dann die andere anzulegen (Vermutlich dazu sogar einmal aus dem Menü rausgehen)

2. Du veränderst den Equip-Block und Unequip-Block beider Masken so, dass hier eine Überprüfung stattfindet, ob die andere Maske angelegt ist und veränderst dann "per Hand" die Variablen in den Scripten
 
Wenn du mir noch verraten würdest, wie ich auf die Variablen der anderen Maske zugreifen kann, dann könnte ich mich gleich dransetzen.
 
Also bevor du das machst würde ich dir erst mal raten ein testPI zu schreiben, mit dem du testest, ob beim wechseln von zwei items wirklich erst der equip-block vom neuen und dann der unequip-block vom alten ausgeführt wird.

Dazu könntest du zb zwei Globals(equip und unequip würden sich da anbieten) erstellen und zwei neue Items mit Scripten erstellen. Die Global Equip setzt du auf 0, die Global unequip auf 1. Die Scripte für die beiden items sollten dann wie folgt aussehen:
Code:
scn itemtest

short equipvar
short unequipvar

begin onequip player

set equipvar to  equip
set unequipvar to  unequip

set equipvar to equipvar+1
set unequipvar to unequipvar-1

if equipvar == 1 && unequipvar == 0
Messagebox "Alles Ok!"
else
Messagebox "Irgendwas stimmt nicht!"
endif

set equip to equipvar
set unequip to unequipvar


end

begin onunequip player

set equip to getglobalvalue equip
set unequip to getglobalgvalue unequip

set equip to equip-1
set unequip to unequip+1

end

Wenn du jetzt erst das Eine Item anlegst sollte ja equip/equipvar 1 sein und unequip 0 also alles ganz normal. Wenn du jetzt das zweite item anlegst sollte ja, wenn man davon ausgeht dass erst das erste unequipped wird (und somit der unequipblock ausgeführt wird) und dann erst das zweite equipped wird, zuerst equip auf 0 und unequip auf 1 gesetzt werd (durch den unequip block von item1) und kurz darauf wieder auf 1 respektive 0 (durch den equip block von item2) und dementsprechend müsste auch die messagebox "alles ok" kommen. Im anderen Fall würde equip auf 2 landen und unequip auf Minus 1 und Die Messagebox "Irgendwas stimmt hier nicht!".

Das erstmal zum testen.

Wenn du mir noch verraten würdest, wie ich auf die Variablen der anderen Maske zugreifen kann, dann könnte ich mich gleich dransetzen.

in der regel kommst du an variablen immer, indem du einfach das objekt oder den quest nimmst und dann die gewünschte variable.

Code:
ObjectRef.VarName
QuestName.VarName

Bevor du jetzt aber fröhlich losskriptest, solltest du dir bei dem Maskenscript darüber im klaren sein, dass du dann auch die variablen, die du ersetzt irgendwo zwischenspeicherst und vertauschst. Ich hoffe du verstehst was ich meine, da ich jetzt grade ehrlich gesagt zu faul bin das ausführlich zu erklären und außerdem ist mir das auch grade n bissl zu konfus im kopf, ohne dass ich das skript vor augen habe.

mfg takbir
 
*hust* *Eigenwerbung* *hust*

Ausrüstung des Schwarzhändlers DV/EV

Beim Händler sucht ihr nach der "Maske des Fremden", und schon habt ihr eine zweite Identität :-D (Ruhm, Infamie und Kopfgeld könnt ihr auch damit ernten, diese Punkte werden allerdings der Maske "gutgeschrieben". funktioniert ähnlich wie die graue Kutte, nur mit ein paar zusatzfeatures^^)

ansonsten gilt: solange der Quest "Freiberuflicher Diebstahl" dein aktueller Quest ist, darf man keine Leute töten, außer zur Selbstverteidigung. wechselst du den aktuellen Quest, ist das sinnlose Morden wieder von der Gilde aus legal :)
 
@takbir: Danke für den Script aber ist es nicht viel einfacher in meinem bestehendem Script ins Equip und Unequip-Event die Messageboxen einzubauen? ;)
Hab dies getan und dabei festgestellt, dass nicht immer das selbe Event zuerst aufgerufen wir. (Hab dreimal meine eigene Maske im Spiel) Es scheint so, als ob unter den Masken eine Hierarchie besteht, wessen Script zuerst ausgeführt wird. Komplett unabhängig davon obs gerade equipt oder unequipt wird. Dies erscheint programmiertechnisch auch am logischten. Es gibt keinen Code der gleichzeitig ausgeführt werden kann. Es gibt immer eine strenge Reihenfolge auch unter den Scripten. Würde den doppelten Aufwand bedeuten, wenn erst alle Scritpe nach einem unequip-Event durchsucht werden würden und anschließend nochmal nach einem Equip.
Um das beheben zu können müsste ich jetzt erstmal wissen ob zu dem Zeitpunkt des Wechsels beide Masken als equippt gelten oder wie sonst kann ich herausfinden ob die andere Maske zuvor getragen wurde? Dann müsste ich an die RefID kommen. Ist es immer die selbe im Falle der grauen Kutte oder zufallsgeneriert beim erhalten? Wie schauts aus, wenns mehreren Masken des selben Typs gibt?

@Verganon: Leider zu spät, da meine Maske genau so weit ist und die Infamiepunkte die an der Maske haften bleiben nicht verloren gehen, sowie bei deiner, wo sie immer auf 0 zurückgesetzt wird, beim neuanziehen. Im Untergrund gilt die Infamie als Ruhm und in den Kreisen bin ich ua. unterwegs ;)
Das Problem mit dem Wechseln von einer Maske auf die andere wird bei deinem Script scheinbar auch nicht umgangen und der letzt Part, der sich mit SE befasst enthält den selben Fehler wie meiner zu Beginn. Die Variablen SECrime.EnteredSECowlOn und SECrime.LeftSECowlOn werden abhängig davon ob man die graue Kutte an hat beim betreten udnv erlassen gesetzt. Für die eigene Maske müsste man ne eigene Questvariable definieren und entsprechende Einträge in den Scripten zum betreten und Verlassen von SE vornehmen.

Wenns da keine Lösung gibt, werde ich wohl damit Leben müssen, dass man nicht von einer Maske auf die andere wechseln darf. Ließe sich das Ingame verhindern?
 
@Verganon: Leider zu spät, da meine Maske genau so weit ist und die Infamiepunkte die an der Maske haften bleiben nicht verloren gehen, sowie bei deiner, wo sie immer auf 0 zurückgesetzt wird, beim neuanziehen. Im Untergrund gilt die Infamie als Ruhm und in den Kreisen bin ich ua. unterwegs ;)
Das Problem mit dem Wechseln von einer Maske auf die andere wird bei deinem Script scheinbar auch nicht umgangen und der letzt Part, der sich mit SE befasst enthält den selben Fehler wie meiner zu Beginn. Die Variablen SECrime.EnteredSECowlOn und SECrime.LeftSECowlOn werden abhängig davon ob man die graue Kutte an hat beim betreten udnv erlassen gesetzt. Für die eigene Maske müsste man ne eigene Questvariable definieren und entsprechende Einträge in den Scripten zum betreten und Verlassen von SE vornehmen.

Wenns da keine Lösung gibt, werde ich wohl damit Leben müssen, dass man nicht von einer Maske auf die andere wechseln darf. Ließe sich das Ingame verhindern?

theoretisch klappt bei mir eigentlich alles, allerdings funktionierte der skript nur einwandfrei wenn man das inventar nach dem an bzw. ablegen geschlossen hat. wenn man direkt wechselt war auch ein fehler mit dem skript... naja. hab den fred leider erst zu spät gesehn :) aber wenn du's geschaft hast, glückwunsch :D vllt. ist mein PI ja trotzdem nützlich, sind ja noch andre schöne sachen dabei *g*
 
@takbir: Danke für den Script aber ist es nicht viel einfacher in meinem bestehendem Script ins Equip und Unequip-Event die Messageboxen einzubauen? ;)
klar kannste das auch bei dir einbauen....aber das hat ja nichts mit deinem PI zu tun sondern war ja einfach nur dazu gedacht herauszufinden wie Abfolge bei den equip und unequip blöcken ist.
Hab dies getan und dabei festgestellt, dass nicht immer das selbe Event zuerst aufgerufen wir. (Hab dreimal meine eigene Maske im Spiel) Es scheint so, als ob unter den Masken eine Hierarchie besteht, wessen Script zuerst ausgeführt wird. Komplett unabhängig davon obs gerade equipt oder unequipt wird.
uh ok jetzt bin ich ehrlich gesagt baff^^
also ich sag mal wenn das jetzt beides questscripte wären, ists logisch, dass dort ne priorität herrscht (kann man ja sogar einstellen). Aber bei Items??? Also am logischsten wäre ja die reihenfolge Item1 wird abgelegt->Unequip-Block Item1 wird ausgeführt->Item2 wird angelegt-> Equip-Block Item2 wird ausgeführt. Aber dies scheint ja nicht immer der Fall zu sein.
Da bin ich jetzt aber ehrlich gesagt überfragt, was die Prioritäten bei Items betrifft.
Dies erscheint programmiertechnisch auch am logischten. Es gibt keinen Code der gleichzeitig ausgeführt werden kann. Es gibt immer eine strenge Reihenfolge auch unter den Scripten. Würde den doppelten Aufwand bedeuten, wenn erst alle Scritpe nach einem unequip-Event durchsucht werden würden und anschließend nochmal nach einem Equip.
äh sry versteh grad nicht was du sagen willst xD
Um das beheben zu können müsste ich jetzt erstmal wissen ob zu dem Zeitpunkt des Wechsels beide Masken als equippt gelten oder wie sonst kann ich herausfinden ob die andere Maske zuvor getragen wurde? Dann müsste ich an die RefID kommen. Ist es immer die selbe im Falle der grauen Kutte oder zufallsgeneriert beim erhalten? Wie schauts aus, wenns mehreren Masken des selben Typs gibt?
RefId ist immer die selbe, aber du brauchst eigtl nur die ObjectID. Um herauszufinden ob zum Zeitpunkt des wechsels beide Items Equipped sind müsstest du im Prinzip im equip Block beider Masken nur folgenden Code verwenden
Code:
[actorID].getequipped objectID

also zB:
Code:
begin onequip player

if player.getequipped item1==1 && player.getequipped item2 == 1
messagebox "Beide Masken werden gleichzeitig getragen!?!"
endif

end

dann weiß du, ob zumindest für den moment, in dem der equip block ausgeführt wird, beide masken getragen werden.

So wie ich das aber sehe scheint das Problem wirklich zu sein, dass die Priorität immer anders zu sein scheint. Hast du evtl mal drauf geachtet, ob immer ein bestimmtes Item Priorität hat? Zb das Item, welches von der ID her früher aufgerufen werden könnte (also quasi welche ID im Alphabet früher kommt). Das würde jetzt beim Problem zwar grade nicht wirklich weiterhelfen aber wäre aufjedenfall Interessant zu wissen.


Wenns da keine Lösung gibt, werde ich wohl damit Leben müssen, dass man nicht von einer Maske auf die andere wechseln darf. Ließe sich das Ingame verhindern?
Also wenn du wie oben herausfinden kannst, ob beim equippen noch beide masken getragen werden, dann würde es ganz simpel reichen diese "player.getequipped" abfrage des jeweils anderem items in den equip block zu packen mit nem unequip und nem return aus dem script
Also:
Code:
begin onequip
if player.getequipped anderemaske == 1
 player.unequip anderemaske
 player.unequip diese maske
 message "Wenn ihr beide Masken gleichzeitig tragt könnte es zu Problemen kommen!!!"
 return
endif

rest des scripts

wenn das nicht geht müsstest du entweder mit ner variable oder ner global arbeiten. D.H. wenn eine der Masken angezogen wird, wird die variable/global auf 1 gesetzt und wenn sie ausgezogen wird, dann eben auf 0.
Das kann man dann ja auch im equip block überprüfen

Code:
begin onequip player

if objectid.variable/global == 1
player.unequip anderemaske
 player.unequip diese maske
 message "Wenn ihr beide Masken gleichzeitig tragt könnte es zu Problemen kommen!!!"
 return
endif
rest des scripts
Mit dieser Abfrage müsste das eigtl Funktionieren. Wenn die Abfolge der Equip und Unequip Blöcke richtig ist sollte eigtl nichts passieren (außer halt das was auch wirklich passieren soll und so wie es passieren soll)
und wenn die Abfolge eben verkorkst ist, dann kommt die warnung, beide masken werden abgelegt und des script abgebrochen.

Ich hoffe das funktioniert auch alles so, wie ich mir das denke oO

gruß, takbir

p.s.
na toll jetzt hab ich hier son ellenlangen roman getextet dass mich mein meerschweinchen in der zeit angepinkelt hat *grummel*XD
 
Also die Scriptreihenfolge scheint von dem Erstellungszeitpunkt der jeweiligen objetke abzuhängen oder es ist im Falle meiner drei Masken Zufall. JEdenfalsl kommt beim Wechsel von Maske A nach Maske B immer das selbe Resultat, aber ein anderes wie beim Wechsel von maske C nach B wenn du das wissen wolltest.
Zu Überprüfen ob vorher eine andere Maske angezogen war scheint nicht möglich zu sein, da es beim anlegen einer neuen sofort als unequipped gilt.

Hab jetzt mittels globaler Variable eine Blockade eingerichtet die dann greift wenns notwendig wird.
In meinem Fall ist ein Wechsel von Maske A->B->C->Graue Kutte problemlos möglich.
Heißt bei der Reihenfolge wird das Unequipevent der vorherigen Maske zuerst ausgeführt. Mann kann natürlich auch problemlos von A nach Graue Kutte wechseln.
Umgekehrt (zb. C->A) wird nun von mir blockiert und die neuangelegte Maske ohne dass ihr Script ausgeführt wird wieder abgelegt.

Bin damit jetzt eigentlich sehr zufrieden, da es unabsichtliches Durcheinanderkommen der Werte verhindert.

Bei Interesse stelle ich euch meine Maske (die das Mesh von Cyro_s DB_Ninjamask benutzt) gerne zur Verfügung.