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 20 von 30

Thema: Auto-Anpassung einer Waffe

Hybrid-Darstellung

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

    Auto-Anpassung einer Waffe

    Hi ho,

    Suche hat nix gebracht - oder vll. hab ich den falschen Begriff eingegeben.

    Also bin grade am Rätseln, wie das funktioniert, dass ich eine Waffe im CS erstelle und ihr aufgelegter Zauber mitlevelt, also jede Stufe verstärkt sich quasi der Zauber.

    Kenn mich eigentlich ganz gut mit Skripte schreiben aus - PHP für Websiten und Abfragen, zum Beispiel, aber da ich schon lang nix mehr mit dem CS gemacht habe, wäre etwas Hilfe sehr hilfreich.

    Wär nett wenn mir jemand helfen könnte.

    Gruß Reichi
    Geändert von Reichi45 (06.03.2008 um 18:40 Uhr)

  2. #2
    genaues kann ich da nicht sagen aber afaik müsste das mit einer leveldlist gehen. Schau doch mal nach das mit anderen Waffen gemacht wurde, die mitleveln

  3. #3
    Danke für die Antwort.

    Hm, ich dachte eigentlich, dass das mit nem Skript funktioniert.

    Was ist denn eine Leveled List? - Gibts überhaupt Waffen im Game, die mitleveln?

    Aja stimmt, die Questbelohnungen passen sich an. Mal schauen...

  4. #4
    ne leveled list geht nur wenn man den gegenstand noch nicht hat, dh. es sind die listen, die bestimmen was deine gegner für items haben bez was in kisten ist wenn du sie öffnest. Mitleleveln geht wenn man den gegenstand noch nicht hat, nur mit einem skript. Vorher musst du aber für jeden level bei dem der Gegenstand geupdated wird eine kopie des gegenstands mit neuen werten, ebenso von der verzauberung (die zauber-kopien halt dann auf den dazupassenden gegenstand legen), machen.

    Wenn sie beispielsweise die selben levels haben soll wie die standartwaffen, dann machste zum beispiel solche kopien (nebenbei: Kopien von einem gegenstand gehn am einfachsten wenn du im cs den gegenstand editierst, die editor-id veränderst, auf ok klickst und beim folgenden dialog auf ja drückst) mit ID:
    deinewaffe1
    deinewaffe2
    deinewaffe4
    deinewaffe6
    deinewaffe9
    deinewaffe12
    deinewaffe16
    deinewaffe20
    oder ähnlich.

    dann machst du einen neuen quest und achtest das "Start Game Enabled" ein häckchen hat.

    Jetzt machst du ein neues Script und stellst bei script Type "Quest" ein.
    Der inhalt wär für die oben gennannten IDs dann:
    Code:
    scn derNameDesScripts
    
    short waffe
    
    begin gamemode
    	if waffe == 0 && player.getitemcount deinewaffe1 == 1 && player.getlevel >= 2
    		player.removeitem deinewaffe1 1
    		player.additem deinewaffe2 1
    		set waffe to 1
    		message "Waffe gelevelt"
    	endif
    	if waffe <= 1 && player.getitemcount deinewaffe2 == 1 && player.getlevel >= 4
    		player.removeitem deinewaffe2 1
    		player.additem deinewaffe4 1
    		set waffe to 2
    		message "Waffe gelevelt"
    	endif
    	if waffe <= 2 && player.getitemcount deinewaffe4 == 1 && player.getlevel >= 6
    		player.removeitem deinewaffe4 1
    		player.additem deinewaffe6 1
    		set waffe to 3
    		message "Waffe gelevelt"
    	endif
    	if waffe <= 3 && player.getitemcount deinewaffe6 == 1 && player.getlevel >= 9
    		player.removeitem deinewaffe6 1
    		player.additem deinewaffe9 1
    		set waffe to 4
    		message "Waffe gelevelt"
    	endif
    	if waffe <= 4 && player.getitemcount deinewaffe9 == 1 && player.getlevel >= 12
    		player.removeitem deinewaffe9 1
    		player.additem deinewaffe12 1
    		set waffe to 5
    		message "Waffe gelevelt"
    	endif
    	if waffe <= 5 && player.getitemcount deinewaffe12 == 1 && player.getlevel >= 16
    		player.removeitem deinewaffe12 1
    		player.additem deinewaffe16 1
    		set waffe to 6
    		message "Waffe gelevelt"
    	endif
    	if waffe <= 6 && player.getitemcount deinewaffe16 == 1 && player.getlevel >= 20
    		player.removeitem deinewaffe16 1
    		player.additem deinewaffe20 1
    		message "Waffe gelevelt"
    		stopquest questName ;da kommt der name von dem Quest hin auf den du des Script gelegt hast
    	endif
    end
    Des müsste eigendlich funktionieren
    Geändert von Atoom (06.03.2008 um 20:05 Uhr) Grund: Käfer im skript zertrampelt

  5. #5
    Das Skript würde ohne Probleme funktionieren, wenn es nur ein Item davon gibt.
    Um das für mehrere Kompatibel zu machen muss man einfach nur die waffe-Variable weglassen (imho unnötig) und aus dem == nach dem GetItemCount ein >= machen (bzw. == 1 einfach weglassen <-- wirkt wie != 0).

    Sähe dann so aus:
    Code:
    scn derNameDesScripts
    
    short Count
    short Equipped
    
    Begin Gamemode
    	if ( Player.GetItemCount deinewaffe1 ) && ( Player.GetLevel >= 2 )
    		Message "Waffe gelevelt"
    		Message "Waffe gelevelt"
    ;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem ( & EquipItem) zu unterdrücken
    		set Equipped to Player.GetEquipped deinewaffe1
    		set Count to Player.GetItemCount deinewaffe1
    		Player.RemoveItem deinewaffe1 Count
    		Player.AddItem deinewaffe2 Count
    		if ( Equipped )
    			Player.EquipItem deinewaffe2
    		endif
    	elseif ( Player.GetItemCount deinewaffe2 ) && ( Player.GetLevel >= 4 )
    		Message "Waffe gelevelt"
    		Message "Waffe gelevelt"
    ;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
    		set Equipped to Player.GetEquipped deinewaffe2
    		set Count to Player.GetItemCount deinewaffe2
    		Player.RemoveItem deinewaffe2 Count
    		Player.AddItem deinewaffe4 Count
    		if ( Equipped )
    			Player.EquipItem deinewaffe4
    		endif
    	elseif ( Player.GetItemCount deinewaffe4 ) && ( Player.GetLevel >= 6 )
    		Message "Waffe gelevelt"
    		Message "Waffe gelevelt"
    ;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
    		set Equipped to Player.GetEquipped deinewaffe4
    		set Count to Player.GetItemCount deinewaffe4
    		Player.RemoveItem deinewaffe4 Count
    		Player.AddItem deinewaffe6 Count
    		if ( Equipped )
    			Player.EquipItem deinewaffe6
    		endif
    	elseif ( Player.GetItemCount deinewaffe6 ) && ( Player.GetLevel >= 9 )
    		Message "Waffe gelevelt"
    		Message "Waffe gelevelt"
    ;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
    		set Equipped to Player.GetEquipped deinewaffe6
    		set Count to Player.GetItemCount deinewaffe6
    		Player.RemoveItem deinewaffe6 Count
    		Player.AddItem deinewaffe9 Count
    		if ( Equipped )
    			Player.EquipItem deinewaffe9
    		endif
    	elseif ( Player.GetItemCount deinewaffe9 ) && ( Player.GetLevel >= 12 )
    		Message "Waffe gelevelt"
    		Message "Waffe gelevelt"
    ;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
    		set Equipped to Player.GetEquipped deinewaffe9
    		set Count to Player.GetItemCount deinewaffe9
    		Player.RemoveItem deinewaffe9 Count
    		Player.AddItem deinewaffe12 Count
    		if ( Equipped )
    			Player.EquipItem deinewaffe12
    		endif
    	elseif ( Player.GetItemCount deinewaffe12 ) && ( Player.GetLevel >= 16 )
    		Message "Waffe gelevelt"
    		Message "Waffe gelevelt"
    ;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
    		set Equipped to Player.GetEquipped deinewaffe12
    		set Count to Player.GetItemCount deinewaffe12
    		Player.RemoveItem deinewaffe12 Count
    		Player.AddItem deinewaffe16 Count
    		if ( Equipped )
    			Player.EquipItem deinewaffe16
    		endif
    	elseif ( Player.GetItemCount deinewaffe16 ) && ( Player.GetLevel >= 20 )
    		Message "Waffe gelevelt"
    		Message "Waffe gelevelt"
    ;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
    		set Equipped to Player.GetEquipped deinewaffe16
    		set Count to Player.GetItemCount deinewaffe16
    		Player.RemoveItem deinewaffe16 Count
    		Player.AddItem deinewaffe20 Count
    		if ( Equipped )
    			Player.EquipItem deinewaffe20
    		endif
    ;StopQuest nicht mehr, da ja evtl. noch andere Exemplare im Umlauf sind
    ;		StopQuest questName ;da kommt der name von dem Quest hin auf den du des Script gelegt hast
    	endif
    End

    PS:
    Ich habe noch eingefügt, dass die Waffe wieder neu ausgerüstet wird, sofern es die alte war.

  6. #6
    Danke, das hilft mir ja schon einen großen Schritt weiter. Wusste nicht dass das doch so kompliziert ist.
    Ihr versteht anscheinend sehr viel vom Skripten. Ich könnte durchaus Leute brauchen für ein kleineres Mod-Projekt.

    Naja, also ich brauch die Waffe sowieso erst ab Stufe 15 oder höher, da mir vorher Verzauberungen von Waffen nix bringen und das zu teuer wird mit reparieren, aufladen, etc.
    Da müsste ich dann mit Stufe 15 im Skript beginnen, oder?

    Aber brauch ich dazu eine Quest? Kann ich das erste Schwert nicht in ne Truhe pappen und dann irgendwo hinstellen?

    Ich hab ja im Forum gelesen, dass man das auch mit einem Zauberspruch machen kann. Wie würde das funktionieren? Einfach das Skript auf einen Zauber legen?
    Geändert von Reichi45 (07.03.2008 um 19:08 Uhr)

  7. #7
    1. Einfach mit stufe 15 beginnen und halt die bedingungen bei "player.getlevel" anpassen, die teile für die einzelnen versionen des schwerts können so viele sein wie du willst, nur im letzten sollte halt immer der stopquest-Befehl für die quest stehn

    ja die quest brauchste, damit des skript vom start an abgespielt würde, die Quest würde wenn du keine log-einträge erstellst ohnehin im spiel nie sichtbar werden. Es ginge natürlich auch, dass du des script auftteilst und die einzelnen teile auf jeweils eine version des schwerts legst. Des problem dabei wäre aber, falls du im spiel die waffe verzauberst das script von dem schwert gelöscht wird, wodurch es nicht mehr leveln würde.

    Ja du kannst irgendeine version mit der du halt starten willst in eine kiste legen.

    Des Grundgerüst eines Scripts für einen zauber wär des (nicht vergessen, Script type auf "Magic Effect" stellen):
    Code:
    scn zaubereffectSCRIPT
    
    begin scripteffectstart
    
    	if player.getitemcount dieIDderWaffe && player.getlevel >= xx ;da des level eintragen, bei der es gelevelt werden sollte
    		player.removeitem dieIDderWaffe 1
    		player.additem dieNachsteVersion 1
    		message "Waffe gelevelt"
    		message "Waffe gelevelt"
    	endif ;diesen if-block einfach so oft kopieren und werte und IDs ändern wie oft du die waffe auf eine neue version leveln willst
    
    end

  8. #8
    Bei mir kommt immer folgende Fehlermeldung, wenn ich das Skript speichern will:
    PHP-Code:
    scn Waffe

    short Count
    short Equipped

    Begin Gamemode
        
    if ( Player.GetItemCount 18Waffe ) && ( Player.GetLevel >= 18 )
            
    Message "Waffe gelevelt"
            
    Message "Waffe gelevelt"

            
    set Equipped to Player.GetEquipped 18Waffe
            set Count to Player
    .GetItemCount 18Waffe
            Player
    .RemoveItem 18Waffe Count
            Player
    .AddItem 23Waffe Count
            
    if ( Equipped )
                
    Player.EquipItem 23Waffe
            
    endif
        elseif ( 
    Player.GetItemCount 23Waffe ) && ( Player.GetLevel >= 23 )
            
    Message "Waffe gelevelt"
            
    Message "Waffe gelevelt"

            
    set Equipped to Player.GetEquipped 23Waffe
            set Count to Player
    .GetItemCount 23Waffe
            Player
    .RemoveItem 23Waffe Count
            Player
    .AddItem 28Waffe Count
            
    if ( Equipped )
                
    Player.EquipItem 28Waffe
            
    endif
        elseif ( 
    Player.GetItemCount 28Waffe ) && ( Player.GetLevel >= 28 )
            
    Message "Waffe gelevelt"
            
    Message "Waffe gelevelt"

            
    set Equipped to Player.GetEquipped 28Waffe
            set Count to Player
    .GetItemCount 28Waffe
            Player
    .RemoveItem 28Waffe Count
            Player
    .AddItem 33Waffe Count
            
    if ( Equipped )
                
    Player.EquipItem 33Waffe
            
    endif
        elseif ( 
    Player.GetItemCount 33Waffe ) && ( Player.GetLevel >= 33 )
            
    Message "Waffe gelevelt"
            
    Message "Waffe gelevelt"

            
    set Equipped to Player.GetEquipped 33Waffe
            set Count to Player
    .GetItemCount 33Waffe
            Player
    .RemoveItem 33Waffe Count
            Player
    .AddItem 38Waffe Count
            
    if ( Equipped )
                
    Player.EquipItem 38Waffe
            
    endif
        elseif ( 
    Player.GetItemCount 38Waffe ) && ( Player.GetLevel >= 38 )
            
    Message "Waffe gelevelt"
            
    Message "Waffe gelevelt"
     
            
    set Equipped to Player.GetEquipped 38Waffe
            set Count to Player
    .GetItemCount 38Waffe
            Player
    .RemoveItem 38Waffe Count
            Player
    .AddItem 43Waffe Count
            
    if ( Equipped )
                
    Player.EquipItem 43Waffe
            
    endif
        elseif ( 
    Player.GetItemCount 43Waffe ) && ( Player.GetLevel >= 43 )
            
    Message "Waffe gelevelt"
            
    Message "Waffe gelevelt"

            
    set Equipped to Player.GetEquipped 43Waffe
            set Count to Player
    .GetItemCount 43Waffe
            Player
    .RemoveItem 43Waffe Count
            Player
    .AddItem 48Waffe Count
            
    if ( Equipped )
                
    Player.EquipItem 48Waffe
            
    endif
        elseif ( 
    Player.GetItemCount 48Waffe ) && ( Player.GetLevel >= 48 )
            
    Message "Waffe gelevelt"
            
    Message "Waffe gelevelt"

            
    set Equipped to Player.GetEquipped 48Waffe
            set Count to Player
    .GetItemCount 48Waffe
                    
    endif
    StopQuest Waffe 
        
    endif
    End 
    Skript Waffe, line 81:
    "Item "Waffe" not found for parameter Quest."

    Weiß jemand weiter?

  9. #9
    Du musst erst eine Quest erstellen, der du die ID gibst, die du dann nach StopQuest einträgst.

    Da das Script schon Waffe heißt kann die Quest nicht auch so heißen.
    Das Script musst du auf jeden Fall einer Quest zuweisen, sonst ist das zwar in der *.esp, hat aber keine andere Auswirkungen.

    Ich würde dir allerdings empfehlen das StopQuest ganz wegzulassen, solltest du die Möglichkeit sehen, dass der Spieler mehr als eine Version der Waffe bekommt.

  10. #10
    Naja also bei einer neuen Quest kann ich ja nur den Namen eingeben. Wo kann ich denn die ID eingeben?

    Ja das Skript kann ich direkt neben dem Questnamen eingeben, ich denk also dass das richtig ist.

    Nö, der Spieler soll nicht mehr als 1 Version der Waffe bekommen.

  11. #11
    die id ist immer des was in der spalte, wo man die verschiedenen quests auswählen kann steht (die spalte die so net "EditorID" heißt), des was bei quest name steht ist für des spiel völlig unwichtig, ist nur der name der im spiel im questlog steht wenn man log-einträge schreibt, was für so eine quest völlig unnötig ist.
    id is des was man gleich dann eingeben muss wenn man in der quest-spalte rechtsklickt und auf new geht, nachträglich muss man auf die in der spalte angezeigte id klicken (einmal) und nach kurzem sollte die id so makiert werden, dass man sie ändern kann.

Berechtigungen

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