Adventskalender

Construction Set Der Scriptthread

Dieses Thema im Forum "[MW] Plugins und Mods" wurde erstellt von The Nici, 25. April 2006.

  1. The Nici

    The Nici Gebannter Benutzer

    Hallo,
    in diesem thread kann man Scripts die nützlich sein könnten hinschreiben, oder fragen welche man brauchen könnte.

    Das ganze wird so aufgebaut:

    BEI EINER SCRIPTANFRAGE:
    SCRIPTVORSTELLUNG:
    So, also, hier meine Anfrage:
    Ich brauche ein script, bei dem bei jedem Magieschaden die Kreatur ein bisschen wächst (0.10) Es soll auch mehr HP und mehr Stärke bekommen (Also Strength +5 und HP +25)
    Es wird das einzige Script auf der Creature sein
    Es wird ein Monster sein.
    [hr:101e7fa7fc]

    Scriptvorstellung:
    Autor: Eomer_13 (verbessert von The Nici)
    Wirkung: Lässt die Kreatur 10-mal so gross werden. Kann auch mit anderen Scales machbar sein.
    Für was ist es geeignet?: Eigentlich für alles.
    Wurde das script getestet?: Sehr wahrscheinlich schon, aber Theoretisch müsste es gehen
    Das Script:
    Code:
    begin Scalescript 
    short doOnce
    
    if ( doOnce == 0 ) 
    setscale 10 
    set doOnce to 1 
    endif 
    
    end
    
    (Die zahl bei Setscale kann beliebig ausgetauscht werden, aber darf nicht 10 überschreiten)

    So, hoffe jemand findet ein Script für mich ;)
     
  2. Werbung (Nur für Gäste)
  3. ReneMiner

    ReneMiner Bürger

    Machbar schon, aber problematisch ist folgendes:
    Während die physikalische/optische Grösse des Monsters wächst bleibt die RootCollisionNode oder BoundingBox bei der alten Grösse. Wenn das Monster zu gross ist trifft man die Box beim Zuschlagen nicht mehr weil sie im Körperinnneren verschwindet. Aber trotzdem hier das Script

    begin HauMichGross

    float resizeMe
    float myScale
    short isDead
    short OnPCHitMe

    if ( menumode == 1 )
    return
    endif

    if ( isDead == 1 )
    return
    endif

    set isDead to OnDeath
    set resizeMe to OnPCHitMe * 0.25

    if ( resizeMe == 0 )
    return
    endif

    if ( myScale < 10 )
    if ( myScale > 0 )

    set myScale to myScale + resizeMe
    setScale myScale

    else
    setscale 1.25
    set myScale 1.25
    endif
    endif

    end

    Die 0.25 bestimmen die Grösse die pro Schlag dazukommt. Von weniger als 0.01 oder mehr als 1.0 würde ich abraten.
    Ausserdem muss dann die 1.25 in beiden Zeilen unten (nach dem ersten Treffer) noch entsprechend angepasst werden
     
  4. johannes89

    johannes89 Vertrauter

  5. Black Mordred

    Black Mordred Vertrauter

    Wäre es nicht besser, für jedes Scriptproblem einen eigenen Thread aufzumachen?

    Wenn jetzt 10 Leute in diesem ein Prob. haben, wirds sicher unübersichtlich
     
  6. The Nici

    The Nici Gebannter Benutzer

    @Rene: Naja, dann amch ichs nur mit HP und Stärke^^ KAnn man denn das Kästchen nicht mitwachsen lassen?

    @BM: was macht das für ein unterschied? Wenn jetzt jemand ein Script sucht das schon drinsteht weist man ihn auf dieses hin, beid en Threads wäre es nicht anders.
    Zwischendiskussionen machen es unübersichtlich.
     
  7. ReneMiner

    ReneMiner Bürger

    Das "Kästchen" (es ist nicht immer ein Kästchen, manchmal auch eine richtige Figur) kann man nicht dem SetScale-Befehl mit vergrössern. Es ist aber auch erst ab einer bestimmten Grösse (etwa zwischen 3.7 und 4.2) so weit drin das man nicht mehr trifft. Kommt drauf an was es für ein Vieh ist. Bei einer "schlanken" Goldenen Heiligen kann man sicher bis auf 6.5 oder so gehen während bei einem fetten Guar vieleicht schon bei 2.5 Schluss ist. Man muss es ausprobieren z.B. indem man in dem Script einen Check einsetzt. an der Stelle unter
    if ( resizeMe == 0 )
    return
    endif

    kann man zeitweilig zum Testen einsetzen

    messagebox "Getroffen!"

    Wenn beim Zuschlagen die Getroffen-Meldung nicht mehr kommt dann ist der Gegner schon zu gross. Die maximale Grösse wäre dann also
    (Konsole auf, den Gegner anklicken, "SV(enter)" eintippen, den Wert für myScale ablesen und das zuletzt dazugerechnete wieder abziehen, dann hat man seine maximal brauchbare Grössenangabe.
     
  8. Killfetzer

    Killfetzer Super-Moderator Mitarbeiter

    So ich hab da auch mal ein paar Scriptfragen:

    1. Weiß irgendjemand wie die (bzw. ob die) Restart-Funktion von Quests funktioniert?

    2. Ich bräuchte ein Script, dass den Spieler, wenn er schläft um eine bestimmte Uhrzeit aufweckt. Das hört sich jetzt nicht so großartig an, aber mit den Schlafbefehlen bin ich noch nicht so klargekommen.

    3. Wenn man sich für eine gewisse Zeit nicht bewegt, fängt die Kamera an, um den Spieler zu rotieren. Also wird es wahrscheinlich eine Variable geben, in der gespeichert ist, wie lange man sich nicht bewegt hat. Kann man diese Variable abfragen, sodass man eine bestimmtes Script auslösen kann, wenn sich der Spieler zu lange nicht bewegt?
     
  9. ReneMiner

    ReneMiner Bürger

    1. Quests "restarten" geht eigentlich nicht. Man kann zwar mit dem Befehl
    setJournal "journalName" 0
    ein Tagebuch auf 0 zurücksetzen aber ob das wirklich in allen Bereichen des Spieles so angenommen wird? Meist werden ja irgendwelche zusätzlichen Werte gesetzt, Tote abgefragt usw.

    2.
    if ( GetPCSleep == 1 )
    if ( GameHour >= Aufstehzeit )
    WakeUpPC
    endif
    endif

    3. Ich vermute das dazu verwendete Gamesetting kann höchstens einen Wert entgegennehmen (wie lang maximal untätig herumgestanden wird) aber wahrscheinlich gibt es keine Möglichkeit, die bereits verstrichene Zeit abzufragen. Aber Du kannst ja mal unter Gameplay/Gamesettings durchstöbern, vieleicht findest Du da was.
     
  10. The Nici

    The Nici Gebannter Benutzer

    Hi,
    Ich suche ein Lift-Script. Kann wer mir das machen?

    Danke schonmal^^

    EDIT: Genauer:
    Eine Plattform soll zu einem Vulkan hochfahren. Sie macht das immer wieder, ohne Schalterbetätigung. Immer rauf, runter rauf runter. es ist ein Plattform. (x/ex_dwrv_block10) als Activator. Also ist die ID "ex_dwrv_block10activator" Ganz geil wär wenn eine Dampfmaschine daran auch noch hochkommt, aber dafür muss man wohl einfach das gleiche Script drauflegen.
    Die Endposition ist: 133971, 157487, 5796 [0,0, 315] 16,19
    Die Startposition ist: 133971, 157487, 1889 [0,0, 315] 16,19
     
    Zuletzt bearbeitet: 2. August 2006
  11. Killfetzer

    Killfetzer Super-Moderator Mitarbeiter

    Gehts etwas präziser?
    Soll der Lift automatisch fahren? Oder soll der Spieler ihn aktivieren? Wenn er ihn aktivieren soll, wie soll er das? Durch einen Schalter oder indem er sich einfach in den Lift stellt? ;)
     
  12. The Nici

    The Nici Gebannter Benutzer

    habs editiert.
     
  13. Killfetzer

    Killfetzer Super-Moderator Mitarbeiter

    Kein Problem. Hier ist das Script:

    begin dg_platform_aufab01

    float timer
    short hoehe

    if ( MenuMode == 1 )
    return
    endif


    if (hoehe == 0)
    if (GetPos Z >= 5796 )
    if (timer <= 3)
    Set timer to timer + GetSecondsPassed
    return
    endif
    if (timer > 3)
    set hoehe to 1
    Set timer to 0
    PlaySound "Machinery"
    return
    endif
    endif

    if (GetPos Z < 5796 )
    MoveWorld z 100
    return
    endif
    endif

    if (hoehe == 1)
    if (GetPos Z <= 1889)
    if (timer <= 3)
    Set timer to timer + GetSecondsPassed
    return
    endif
    if (timer > 3)
    set hoehe to 0
    Set timer to 0
    return
    endif
    endif

    if (GetPos Z > 1889)
    MoveWorld z -100
    return
    endif
    endif

    end


    Dieses Script bewegt die Platform nun nach oben, lässt sie dort 3 Sekunden warten und danach wieder herunterfahren. Dort wartet sie wieder 3 Sekunden und fängt von vorne an.
     
  14. The Nici

    The Nici Gebannter Benutzer

    Oha. Danke :D Werd dich jedenfalls in der Readme unter Credits erwähnen^^
     
  15. The Nici

    The Nici Gebannter Benutzer

    Neue Scriptanfrage:
    Ich brauche ein Script, bei dem Man ein bestimmtes Item braucht, um passieren zu können. Man muss eine Eintrittskarte kaufen. Dann zeigt man sie einer Wache und die öffnet dann das Törchen und man kann durch.
    Die ID des NPC ist Dwemer_Torwächter und die ID der Karte ist Dwemer_Passierschein.

    Danke schonmal im Vorraus
     
  16. Lichtkrieger

    Lichtkrieger Abenteurer

    Wenn ich dich richtig verstanden habe müsste es so gehen:
    Code:
    Öffne das Dialog-Fenster und erstelle ein neues Topic (z.B. Eintretten zu Dürfen) jetzt erstellst du bei Info/Response ein neue Zeile und schreibst ein Text. (z.B Willst du eine eintrittskarte kaufen) bei der ID kommt dann die [B]ID Dwemer_Torwächter[/B]. Bei Variable/Funktion kommt rein Item [B]Dwemer_Passierschein und auf < 1[/B]. Bei den Result-Fenster kommt rein [B]Choice: "Ja für 500Draken" 1 "Nö heute nicht" 2 [/B] 
    So das erste ist fertig jetzt musst du:
    Code:
    Im selben Topic bei Info/Response ein neue Zeiel machen (Hier fü 500 haste eine Eintrittskarte) die ÜBER der anderen ist (es wird immer von unten nach oben Abgefragt) 
    Bei Id kommt das gleiche bei Variable/Funktion kommt [B]Funktion Choice = 1[/B] und [B]Item Gold_001 >= 500[/B]
    im Result-Fenster kommt dann
    [B]Player -> RemoveItem"Gold_001" 500
    bei Funktion/Variable kommtPlayer -> AddItem "Dwemer_Eintrittskarte" 1[/B]  
    So jetzt machste:
    Code:
    bei Info/Response noch eins auch wieder über die anderen.(du hast nicht genug geld)
    Id bleibt gleich
    bei Funktion/Variable kommt [B]Funktion Choice = 1[/B] und [B]Item Gold_001 < 500[/B]
    im Result kommt Nichst hin
    Jetzt das vorletzte
    Code:
    bei Info/Response noch eins auch wieder über die anderen.(Warum nicht na gut wer nicht will der hat schon)
    Id Bleibt gleich
    bei Funktion/Variable kommt [B]Funktion Choice = 2[/B]
    Im Result kommt nichts
    Noch Eins dan ist es fertig:
    Code:
    bei Info/Response noch eins auch wieder über die anderen.(Du hast schon eine Karte)
    Id Bleibt gleich
    bei Funktion/Variable kommt [B]Item Dwemer_Eintrittskarte >= 1[/B]
    Result kommt nichts 
    So fertig mit dn Dialogen:
    Auf das Tor kommt folgendes Script:
    Code:
    Begin Dwemer_tor_Script_01
    
    If ( OnActivate == 1 )
    If ( GetItemCount "Dwemer_Eintrittskarte" >= 1 )
    Activate
    Return
    EndIf
    EndIf
    End
    So sollte es funktionieren Denke ich Habe es nicht getestet.
     
  17. The Nici

    The Nici Gebannter Benutzer

    ich glaub, ich mach einfach ein Händler der das verkauft. dann muss ich nurnoch das letzte script benutzen.
    Muss man dort nicht anstatt activate unlock machen? wenn es zugeschlossen ist und activate kommt würds ja zugeschlossen bleiben...
     
  18. Lichtkrieger

    Lichtkrieger Abenteurer

    nee dadurch das
    If ( OnActivate == 1 )
    If ( GetItemCount "Dwemer_Eintrittskarte" >= 1 )

    MUSST du die eintrittskarte haben sonst activiert sich die Tür nicht
     
  19. The Nici

    The Nici Gebannter Benutzer

    aha. also muss ich sie garnicht abschliessen. cool.
     
  20. Lichtkrieger

    Lichtkrieger Abenteurer

    ja du musst nichs abschlkiessen.
    Wenn das mit
    If ( GetItemCount "Dwemer_Eintrittskarte" >= 1 )
    Nicht funzt
    dann probier mal
    If ( player -> GetItemCount "Dwemer_Eintrittskarte" >= 1 )
    Ich weiß nicht mehr was man davon nehmen muss.
     
  21. The Nici

    The Nici Gebannter Benutzer

    Ich muss wohl das zweite nehmen. Mit dem ersten klappts net.
     
  22. Werbung (Nur für Gäste)
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden