Construction Set Prozentuale Chance

Fellan

Freund des Hauses
Ich möchte, dass beim Öffnen eines Containers etwas mit einer prozentualen Chance von X passiert. Z.B., dass ich eine 50%ige Chance habe, eine Falle auszulösen oder eine 10%ige Chance, dass ein Zauber auf mich gewirkt wird. Wie erreiche ich das?
 
Code:
scn RandomScript

short RanVAR

Begin OnActivate

set RanVar to to [COLOR="Red"][B]1[/B][/COLOR] + 0.[COLOR="DarkGreen"][B]10[/B] [/COLOR]* GetRandompercent  ;heißt das eine Zufallige Zahl zwischen [COLOR="Red"][B]1[/B][/COLOR] und [COLOR="DarkGreen"][B]10[/B][/COLOR] erstellt wird

If RanVar == 1 
; spezielle Aktivität die in einem von zehn Fällen passiert
activate
else
activate
endif

End

🙂
 
  • Like
Reaktionen: Fellan
hm.. könnt man sowas auch vill machen, das ein Schwert bei einer Chance von 1 : 70 einen Kritischen Treffer landet, udn somit 60 dmg mehr macht oder so?
 
Hmm, vll wenn man eine Trigger Box um das Schwert macht, das man per Begin OnTrigger sehen kann, ob jemand mit dem Schwert geschlagen wurde, Ich denke dann würde es gehen,eine einfachere Lösung fällt mir da nicht ein
 
hm.. könnt man sowas auch vill machen, das ein Schwert bei einer Chance von 1 : 70 einen Kritischen Treffer landet, udn somit 60 dmg mehr macht oder so?

Das ist kein Problem, wenn man diesen Effekt als Verzauberung auf eine Waffe legt. Dazu ein Skript als Effekt schreiben, das bei ScriptEffectStart eine Zufallsvariable generiert (GetRandomPercent, liefert einen Wert zwischen 0 und 99) und abfragt, ob diese kleiner oder gleich 1 ist (Chance von 1:70 entspricht etwa einer Wahrscheinlichkeit von 1,5%). Siehe dazu auch SinHHHans Skriptvorschlag. Wenn das der Fall ist, kann das Skript die Verringerung der Lebensenergie um den gewünschten Wert umsetzen. Z.B. über SetActorValue Health -60. Das kann auch mit einer Nachricht kombiniert werden, wie "Ihr habt einen kritischen Treffer erzielt! + 60 Schaden!".

Der Nachteil dabei ist, dass diese Verzauberung Aufladungen verbraucht und die Waffe nicht anderweitig verzaubert werden kann.

Schönen Gruß, Haldor.
 
@Xaser: Ich würde es so versuchen, folgenden Script auf das Schwert legen:

Code:
scn RandomScript

short RanVAR

Begin OnHit

set RanVar to to [COLOR=Red][B]1[/B][/COLOR] + 0.[COLOR=DarkGreen][B]70[/B] [/COLOR]* GetRandompercent  ;heißt das eine Zufallige Zahl zwischen [COLOR=Red][B]1[/B][/COLOR] und [COLOR=DarkGreen][B]70[/B][/COLOR] erstellt wird

If RanVar == 1 
; spezielle Aktivität die in einem von siebzig Fällen passiert
activate

else
activate
endif

End

Ist aber ungetestet.
 
Omg ihr Pro's :lol:
Ich versteh kein Wort. 😱
Aber ich möchte auch mal was dazu sagen:

Der Nachteil dabei ist, dass diese Verzauberung Aufladungen verbraucht und die Waffe nicht anderweitig verzaubert werden kann.

Das mit der Aufladung sollte eigentlich kein Problem sein, weil man, wenn man das Enchantment erstellt hat, die Kosten des Effektes selbst bestimmen kann.
Einfach das Häkchen bei "Auto-Calculate" weg machen und bei "Enchantment Cost" 0 eingeben.
Das mit den weiteren Verzauberungen stimmt schon, aber wenn er das Schwert von vornherein verzaubert kann der Spieler ja sowieso nichts weiter verzaubern.

So ... ich hab zwar echt keine Ahnung vom Skripten, aber dafür schon etwas mehr im CS. :lol:

lg Wave
 
@ Wavebreaker

Bist du dir da sicher? Ich weiß es leider gerade nicht genau und hab keine Zeit zum nachschauen, aber ich meine, das Programm würde automatisch immer mindestens Kosten von 1 Ladung pro Nutzung für eine Verzauberung berechnen... Das habe ich irgendwie so in Erinnerung, dass es irgendwie nicht möglich war, Verzauberungen ganz kostenlos zu machen, im Gegensatz zu normalen Zaubersprüchen, wo das möglich ist, wie du es beschrieben hast.

Schönen Gruß, Haldor.
 
Ich in mir ziemlich sicher.
Wir reden doch hier von Enchantments, oder?
Ist aber auch egal, weil man das eigentlich überall so einstellen kann.

Ich habe vorsichtshalber den verzaubertem Gegenstand einen Enchanmtent Punkt gegeben und bei der Verzauberung nicht nur "Enchantment Cost" sondern auch das andere (mir fällt der Name nicht ein) auf 0 gestellt.

Das funktioniert reibungslos, hab ich gerade getestet. 😀

Ich hoffe, dass ich helfen konnte.


Wave
 
Außerdem gibts da nochwas bei Fellans Lösung, die mir komisch vorkommt... (nur mal so anmerk):
set RanVar to to 1 + 0.70 * GetRandompercent

If RanVar == 1

Also... nehmen wir einmal an GetRandomPercent spuckt ne 10 aus. 0.7 * 10 = 7. 7+1 = 8 (uuuuh ich kann rechnen ^^) . Also funzt die Abfrage danach nicht: Was sie allerdings sollte. Wenn ich mit GetRandomblablablub arbeite frga ich lieber mit randomVar <= 70 ab. Ist -find ich- einfacher....

mfG L
 
Code:
scn RandomScript

short RanVAR

Begin OnActivate

set RanVar to to [COLOR="Red"][B]1[/B][/COLOR] + 0.[COLOR="DarkGreen"][B]10[/B] [/COLOR]* GetRandompercent  ;heißt das eine Zufallige Zahl zwischen [COLOR="Red"][B]1[/B][/COLOR] und [COLOR="DarkGreen"][B]10[/B][/COLOR] erstellt wird

If RanVar == 1 
; spezielle Aktivität die in einem von zehn Fällen passiert
activate
else
activate
endif

End

🙂
Bedeutet das, dass das Skript immer aufrundet, oder wie?
 
Wenn ich hier auch mal eine Frage stellen darf:
Bei mir wurde die short zB. auf 6.8 oder 14.3 gerundet.
Wie kann das sein?