Script de guérison ( comme le masque de Konahrik )

C'est ici que vous pouvez poser vos questions techniques.
Répondre
Avatar du membre
alph4omeg4
Moddeur aspirant
Moddeur aspirant
Messages : 28

Script de guérison ( comme le masque de Konahrik )

Message par alph4omeg4 »

Voila travaillant sur un mod d'armure je souhaite appliquer sur une des pièces d'armure un enchantement semblable a celui du masque de Konahrik ... ayant fouillé le CK j'ai trouvé le script y étant rattaché .

Code : Tout sélectionner

Scriptname DragonPriestUltraMaskEffect extends ActiveMagicEffect  

actor property selfRef auto hidden
magicEffect property DragonPriestMaskFireCloakFFSelf auto
float property HPthreshold = 0.20 auto
{Below this HP we have a chance of the special effects.  Default 20% (0.2)}
float property effectChance = 0.25 auto
{effect may happen when HP is below this level DEFAULT 25% (0.25)}
float property rareEffectChance = 0.05 auto
{Very Rare effect may happen when HP is below this level DEFAULT 5% (0.05)}
explosion property fakeForceBall1024 auto
spell property flameCloak auto
spell property GrandHealing auto
spell property rareSpell  auto
magicEffect property rareEffect auto

EVENT OnEffectStart(Actor Target, Actor Caster)
	
	selfRef = caster
	
endEVENT


EVENT onHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)

	if (selfRef.getActorValuePercentage("Health") < HPthreshold) && \
		!(selfRef.HasMagicEffect(DragonPriestMaskFireCloakFFSelf)) && \
		!(selfRef.isDead())
			float dice = utility.RandomFloat(0,1)
; 			debug.trace("Konahrik rolled: "+dice)
			if dice <= effectChance
; 				debug.trace("Ultra mask effect Proc'd")
				selfRef.placeAtMe(fakeForceBall1024)
				selfRef.knockAreaEffect(1,1024)
				GrandHealing.cast(selfRef,selfRef)
				flameCloak.cast(selfRef,selfRef)		
			endif
			if dice <= rareEffectChance && !(selfRef.hasMagicEffect(rareEffect))
; 				debug.trace("Ultra mask very rare effect Proc'd")
				rareSpell.cast(selfRef,selfRef)
			endif
	endif
endEVENT
Le problème est que le papyrus est un peu obscur pour moi ; par exemple un des effets que je souhaite dans mon script est que lorsque la santé est en dessous de 35% , un sort de soin se lance durant 25 secondes et ce dans les 1/4 des fois ou la santé descend sous les 35% .
Je pense pour le déclencher a un selfref.getactorvaluepercantage("health').
voici mon code actuel

Code : Tout sélectionner

ScriptName CollierPsijiqueAntiqueEffet Extends ActiveMagicEffect  

actor property selfRef auto hidden
magicEffect property CollierPsijiqueAntiqueSoin auto

EVENT OnEffectStart(Actor Target, Actor Caster)
	
	selfRef = caster
	
endEVENT


EVENT onHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)

	if (selfRef.getActorValuePercentage("Health") < HPthreshold) && \
			!(selfRef.isDead())
			if selfRef.getActorvaluePercentage("Health")<=0.35
				{effet bariere magique dans 1/4 cas            }
				
			elseif selfRef.getActorvaluePercentage("Health")<=0.20
				GrandHealing.cast(selfRef,selfRef) {dans 1/4 des cas}
			elseif selfRef.getActorvaluePercentage("Health")<=0.05
				{ effet corps ethere dans 5% des cas	}
			endif
	endif
endEVENT


Merci de votre aide.
Avatar du membre
Nayos
Moddeur aspirant
Moddeur aspirant
Messages : 580

Re: besoin d'aide pour un script

Message par Nayos »

Code : Tout sélectionner

ScriptName CollierPsijiqueAntiqueEffet Extends ActiveMagicEffect 

actor property selfRef auto hidden
magicEffect property CollierPsijiqueAntiqueSoin auto
float property HPthreshold = 0.35 auto
;En dessous de ce pourcentage de hp, il y a une chance de proc de l'effet spécial. Valeur par defaut : 35%
float property effectChance = 0.25 auto
;pourcentage de chance que l'effet proc. Valeur par defaut : 25%
spell property GrandHealing auto
EVENT OnEffectStart(Actor Target, Actor Caster)
   
   selfRef = caster
   
endEVENT


EVENT onHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)

   if (selfRef.getActorValuePercentage("Health") < HPthreshold) && \
	 !(SelfRef.HasMagicEffect(CollierPsijiqueAntiqueSoin))&&\
     !(selfRef.isDead())
         Float dice = Utility.RandRandomFloat(0,1)
         ;on initialise le random. Il va selectionner un réel entre 0 et 1
         if dice <= effectChance
         ;si le rand est inférieur ou égal au random (dice), alors l'effet proc
             GrandHealing.cast(selfRef,selfRef)
         EndIf
   endif
endEVENT
Voilà déjà un début de correction. tu à ici le proc de ton sort de soin, mais j'ai l'impression que tu aimerais un effet supplémentaire dessus. Si oui, j'ai besoin de plus d'infos ^^.

PS : J'ai fait une correction en me basant sur mes (quand même pas énormes) connaissances du papyrus et sur le script de konahkrik, donc il peut que j'ai déclaré des mauvaises variables et property.
NE CLIQUE PAS !
► Afficher le texte
Mesut-Ozil
Traducteur chevronné
Traducteur chevronné
Messages : 221
Contact :

Re: besoin d'aide pour un script

Message par Mesut-Ozil »

Le plus simple ne serait pas de dupliquer une armure enchantée, de mettre de nouvelles stats, d'ajouter les modèles et de changer l’enchantement avec celui que tu veux?
Répondre

Retourner vers « Entraide sur le Creation Kit »