Aller au contenu


La Vitesse De Coup Dépend Des Caractéristiques Str Et Spd


  • Veuillez vous connecter pour répondre
8 réponses à ce sujet

#1 SpiritusRector

SpiritusRector

Posté 07 juin 2010 - 04:57

Bonjour à tous,

Voilà je suis à la recherche d'un scrpit fonctionnant sous OBSE 18
à base de SetWeaponSpeed 1.200 if actor attribute speed (or strength) =50
En bref je veus scripter une bonne partie des armes d'oblivion pour faire en sorte que votre vitesse (pour les armes légères)
et votre force (pour les armes lourdes) modifie la vitesse de vos coups avec les dites armes...
Seulement voilà je suis une bille en script, et j'avoue ne pas trop savoir comment m'y prendre...
Je pensais à un script d'objet du genre

Scn IronDagger

Ref ActorRef

Begin OnEquip
   SetWeaponSpeed 1.450 if Actor attribute speed 55
endif

Begin OnEquip
   SetWeaponSpeed 1.500 if Actor Attribute speed 60
endif

Begin OnEquip
   SetWeaponSpeed 1.550 if actor attribute speed 65
endif

etc...
      
END

Mais la syntaxe est fausse biensur... Et c'est éventuellement là où vous intervenez...

Merci d'avance à ceux qui auront la patience de me donner un ti coup de pouce...Cela rendra le jeu plus réaliste

Bon je crois que je tiens quelque chose en script cependant j'ai un souci mon Construction Set ne veut pas entendre parler
de fonctions issues des différentes versions de OBSE...

Quelqu'un serait il comment l'y forcer?

Ce script est important dans la mesure ou il permettra de faire en sorte que les créatures trés rapides et fortes puissent attaquer trés rapidement.
Ainsi vous pourrez visuellement évaluer la force l'agilité et la vitesse de votre adversaire en regardant la vitesse à laquelle il porte ces coups.
Cela commencera à donner aussi un vrai avantage à ce faire chier à gonfler des stats d'une manière ou d'une autre...

Ajouter à cela une forme de multiplication de dégats magiques fondés sur l'écart de INT ou WIL du lanceur et de la cible et on commencera à obtenir un jeu réaliste et beaucoup plus sympas....

OK problème résolu on apprend des choses avec google...(démarrer TESC avec OBSE loader lol waou c'était dur...)

Je vous donne des news dès que tout est ok...

Et j'essaye d'arréter les monologues dès que possible...
Audaces Fortuna Juvat...

#2 tenzaku

tenzaku

Posté 07 juin 2010 - 07:19

Aussi résolus soient tes problèmes je ne peux m'empêcher d'intervenir en me disant qu'il te faudrait un miracle ou deux pour faire marcher cette petite merveille (à prendre à l'ironie):

Citation

Begin OnEquip
SetWeaponSpeed 1.450 if Actor attribute speed 55
endif
Selon mes sources et mon expérience ce genre de choses ne fonctionne pas, et pour cause:

Citation

Begin OnEquip
If Actor attribute speed 55
SetWeaponSpeed 1.450
Endif
Ceci fonctionne mieux, d'abord on vérifie la condition et seulement après on opère le changement... Mais ce n'est pas tout!

Citation

If Actor attribute speed 55
Serait mieux en:

Citation

If Actor attribute speed == 55
Histoire de dire que la valeur doit être égale à 55 et je présume que >= 55 serait mieux. Mais ce n'est pas tout !!

Citation

Begin OnEquip
If Actor attribute speed >= 5555
SetWeaponSpeed 1.450
Endif
Chaque bloc Begin doit être terminé par un "End" ... Autrement dit tu dois toujours mettre "End" avant un nouveau "Begin"... Ce qui donnerait:

Citation

Begin OnEquip
If Actor attribute speed >= 5555
SetWeaponSpeed 1.450
Endif
End
Bien sur il y a d'autres fautes mais tout cela fait partie de la base la plus primaire.
PS: As-tu jeté un oeil au wiwiki? Il est vraiment pas mal pour ça :dry:

Modifié par tenzaku, 07 juin 2010 - 07:22.

Tenz' pour les intimes.

#3 beeratwork

beeratwork

Posté 07 juin 2010 - 13:34

J'ai bien une idée de script, mais j'hésite à le mettre car un problème de taille se pose : la modif des stat de l'arme se fait quand elle est équippée, et il s'agit de faire un script de quête qui agit sur toute les armes : le problème est que lorsque le joueur se déséquipe d'une arme, elle doit être réinitialisée... sinon la seconde fois qu'on la prendra en main on frappera encore plus vite qu'avant etc

DOnc en gros, dès que le joueur prend une arme en main, je dois enregistrer la référence, dans par exemple la variable "ArmeActuelle" et pouvoir remettre à zéro l'arme dont la référence est enregistrée dans "ArmePrecedente"

Bon voilà quand même le post :
L'idée est très bonne, mais pour être plus "réel", il faudrait prendre en compte autre chose que seulement la vitesse.
Et puis comme il y a des centaines d'armes, voir un bon millier, dans oblivion.esm et que ça sigifierait de vérifier chaque fois l'ID de l'objet équippé et donc de faire des dizaines de scripts de quête en chaîne car on est limité au niveau du nombre de lignes dans un script, il y a un moyen moin chiant et plus "simple", qui fonctionnera même avec les armes des autres mods.

1. Enregistrer la référence de l'objet équipé et son type
ref weapon

set weapon to player.GetEquippedObject 16

2. Enregistrer :
- si l'arme est dans la catégorie "one hand"/"two hand"/"blunt one hand"/"blunt two hand"/"Staff"/"Bow"
- la masse de l'arme
- la portée de l'arme ?
- la vitesse de l'arme
- les dégât de l'arme
Les types d'armes :
  0: Blade1H
  1: Blade2H
  2: Blunt1H
  3: Blunt2H
  4: Staff
  5: Bow
ref weapon
short DefType
short DefWeight
short DefReach
short DefSpeed
short DefDamage

; Valeur par défaut de l'arme
set weapon to player.GetEquippedObject 16
set DefType to GetWeaponType weapon
set DefWeight to GetWeight weapon
set DefReach to GetWeaponReach weapon
set DefSpeed to GetWeaponSpeed weapon
set DefDamage to GetAttackDamage weapon

3. Maintenant, en fonction des caractéristiques tu vas pouvoir apporter des bonus malus, par exemple :
- les talents lame, arme contondante, précision jouent sur les dégats en fonction du type d'arme (précision pour les bâtons et arcs)
- la force joue sur les dégâts
- l'endurance joue sur le poids
- l'agilité joue sur la vitesse de frappe
- la vitesse joue sur la vitesse de frappe
- l'état actuel de la fatigue et celui de la santé jouent sur les dégâts infligés, le poids et la vitesse
On pourrait expliquer ça par le fait que plus un personnage est fort, plus il frappe dur, que plus il est endurant, plus il peut porter des objets, et que plus il est agile et rapide plus il frappe vite.
Mais les blessures et l'énergie dépensée au combat auraient l'effet inverse.

4. La vitesse de frappe ne doit pas être trop "grosbil" : une vitesse de 1.6 pour une épée longue, c'est très bien ! Surtout qu'il s'agit de la maniabilité d'une dague... Je propose donc les maximum suivant :
- one hand/blunt one hand : 1.6
- two hands/blunt two hands  : 1.2
C'est ici qu'on s'aperçoit que vérifier la portée devient intéressant pour faire la distinction entre les armes "courtes" et très maniable, et les armes "longues" moins maniable.
Dans certains mods, une hallebarde peut être dans la catégorie "two hand" (plus pour les claymore).
Donc une portée inférieure à 1 en "one hand" permettrait de monter à 2 pour la vitesse et en "two hand" à 1.4 par exemple

5. Donc en observant le point 4, le modifiacteur de dégât = facteur talent + facteur force.
Le modificateur de poids = facteur endurance et le modificateur de vitesse = facteur agilité + facteur vitesse
Mais la fatigue et la santé on un effet général qui devra donc être repris sur tout les modificateurs. On va travailler en pourcentage.
C'est un script de quête
ref weapon
short DefDamage
short DefReach
short DefSpeed
short DefType
short DefWeight
short MaxDamage
short MaxSpeed
short MaxWeight
float BaseFatigue
float BaseHealth
float CurrentHealth
float CurrentHealth
float FactorAgility
float FactorBlade
float FactorBlunt
float FactorEndurance
float FactorMarksman
float FactorSpeed
float FactorStrenght
float fQuestDelayTime
float ModFactorDamage
float ModFactorFatigue
float ModFactorHealth
float ModFactorSpeed
float ModFactorWeight
float NewDamage
float NewSpeed
float ValueAgility
float ValueBlade
float ValueBlunt
float ValueEndurance
float ValueFatigue
float ValueHealth
float ValueMarksman
float ValueSpeed
float ValueStrenght

Begin GameMode
; Eviter que l'application ne se fasse toute les 5s
if (fQuestDelayTime != 0.01)
  set fQuestDelayTime to 0.01
endif

if (Initialisation == 0)
set OldWeapon to -1
set Initialisation to 1
elseif (Initialisation == 1)
MessageBox "Pour réinitialiser, set IDQuête.Initialisation to 0 blablabla il y a de la place pour mettre des menus de config"
set Initialisation to 100
elseif (Initialisation == 100)

; C'est ici que ça coince, car il faut mettre une condition sinon ça va foutre le bordel dans le jeu !
; Vérifier que l'arme en main est la même qu'au cycle précédent
if (weapon != oldweapon)
  set weapon to player.GetEquippedObject 16
elseif (weapon

; Valeur par défaut de l'arme
set DefType to GetWeaponType weapon
set DefWeight to GetWeight weapon
set DefReach to GetWeaponReach weapon
set DefSpeed to GetWeaponSpeed weapon
set DefDamage to GetAttackDamage weapon

; Calcul de l'effet santé
set CurrentHealth to player.GetAV Health
set BaseHealth to player.GetBAV Health
; En cas de bonus de santé
if (CurrentHealth > BaseHealth)
  set CurrentHealth to BaseHealth
endif
set ValueHealth to (CurentHealth/BaseHealth)
; Calcul du modificateur, on fait "1 - la valeur " : 100% de santé = 100% = 1. Il s'agit normalement d'un effet négatif, donc 100% de santé correspond à 0 effet négatif et 75% de santé à 25% d'effet négatif, soit à une veleur de 0.25 qui sera retiré de chaque modificateur. C'est clair ?
set ModFactorHealth to (1-ValueHealth)

; Calcul de l'effet fatigue
set CurrentFatigue to player.GetAV Fatigue
set BaseFatigue to player.GetBAV Fatigue
; En cas de bonus de fatigue
if (CurrentFatigue > BaseFatigue)
  set CurrentFatigue to BaseFatigue
endif
set ValueFatigue to (CurentFatigue/BaseFatigue)
; Calcul du modificateur
set ModFactorFatigue to (1-ValueFatigue)

; Calcul du maximum de dégâts possible, par exemple, on peut faire au maximum 2x plus de dégât
set MaxDamage to (DefDamage * 2)

; Calcul du maximum de vitesse pour les armes à une main
if (Type == 0 || Type == 2)
  set MaxSpeed to 1.6
  if (DefReach =< 1)
   set MaxSpeed to 2
  endif
; Calcul pour les armes à deux mains
elseif (Type == 1 || Type == 3)
  set MaxSpeed to 1.2
  if (DefReach =< 1)
   set MaxSpeed to 1.4
  endif
; Calcul pour les arcs et les bâtons, à voir
elseif (Type == 4 || Type == 5)
  set MaxSpeed to 2
endif

; Calcul de la masse maximale, si le personnage est très affaibli, il pourrait avoir l'impression que son arme en main est d'un poids incroyable, on va quadrupler le poids pour être gentil lorsque le joueur est mort (comme ça il aura au moin eu le temps de voir le poids tripler)
set MaxWeight to (DefWeight * 4)

; Calcul du modificateur de dégât
if (Type == 0 || Type == 1)
  set ValueBlade to player.GetBAV Blade
  set FactorBlade to (ValueBlade/100)
  set FactorBlunt to 0
  set FactorMarksman to 0
elseif (Type == 0 || Type == 1)
  set ValueBlunt to player.GetBAV Blunt
  set FactorBlunt to (ValueBlunt/100)
  set FactorBlade to 0
  set FactorMarksman to 0
elseif (Type == 0 || Type == 1)
  set ValueMarksman to player.GetBAV Marksman
  set FactorMarksman to (ValueMarksman/100)
  set FactorBlade to 0
  set FactorBlunt to 0
endif
set ValueStrenght to player.GetBAV Strenght
set FactorStrength to (ValueStrenght/100)
; On additionne les facteurs talent et le facteur force. On fait la moyenne
set ModFactorDamage to ((FactorBlade + FactorBlunt + FactorMarksman + FactorStrenght)/2)
; Calcul du paramètre dégât sans les malus
set NewDamage to (ModFactorDamage * DefDamage + DefDamage)
; Ajout des malus
set NewDamage to (NewDamage - (ModFactorHealth + ModFactorFatigue) * DefDamage)
; Vérification qu'on ne dépasse pas le maximum ou qu'on n'est pas en négatif, même pas mal, frappe plus fort lopette
if (NewDamage < 0)
  set NewDamage to 0
elseif (NewDamage > MaxDamage)
  set NewDamage to MaxDamage
endif

; Calcul du modificateur de vitesse
set ValueAgility to player.GetBAV Agility
set FactorAgility to (ValueAgility/100)
set ValueSpeed to player.GetBAV Speed
set FactorSpeed to (ValueSpeed/100)
set ModFactorSpeed to ((FactorAgility + FactorSpeed)/2)
set NewSpeed to (ModFactorSpeed * DefSpeed + DefSpeed)
set NewSpeed to (NewSpeed - (ModFactorHealth + ModFactorFatigue) * DefSpeed)
; Il ne faut pas être trop lent ou trop rapide
if (NewSpeed < 0.5)
  set NewSpeed to 0.5
elseif (NewSpeed > MaxSpeed)
  set NewSpeed to MaxSpeed
endif

; Calcul du modificateur de masse
set ValueEndurance to player.GetBAV Endurance
set FactorEndurance to (ValueEndurance/100)
set ModFactorWeight to (FactorEndurance)
; C'est la diminution de fatigue/santé qui doit augmenter le poids, et une bonne endurance contribue à le diminuer
set NewWeight to ((ModFactorHealth + ModFactorFatigue) * DefWeight + DefWeight)
set NewWeight to (NewWeight - ModFactorWeight * DefWeight)
; Il ne faut pas être en poids négatif ou trop lourd
if (NewWeight < 0)
  set NewWeight to 0
elseif (NewWeight > MaxWeight)
  set NewWeight to MaxWeight
endif

; Application des valeurs
SetAttackDamage NewDamage Weapon 
SetWeaponSpeed NewSpeed Weapon
SetWeight NewWeight weapon
endif
End

Modifié par beeratwork, 07 juin 2010 - 13:46.


#4 SpiritusRector

SpiritusRector

Posté 10 juin 2010 - 05:22

Pour commencer merci à vous deux pour vos réponses et propositions.
J'avoue que j'ai toujours étais plus branché étoffage de contenu, retouchage et création textures et 3d que scripting mais je m'y met...(et ca me plait)
tenzaku tes conseils si basiques soient ils m'ont servi, et me serviront encore sans doute...
BeerAtWork j'ai un truc qui marche issu d'un mod obscur et délaissé trouvé sur nexus, je l'ai modifié à ma sauce je te le laisse ci après ainsi que le nom de l'original... pour autant que je sache il ne présente pas l'inconvénient qui te génait tant (accumulation d'accélération)

scn VitesseDesCoups

float fQuestDelayTime

short bDoOnce
short bNoOBSE

short InfoKey
short bKeySet

ref CurWeapon
ref OldWeapon
short WeaponType
float WeaponWeight
float WeightCheck
float HpRatio
short CurHp
short MaxHp
short EnchType
float CurCharge
short AnimType

ref BaseWeapon

float CurSpeed
short Agi
short OldAgi
short Spd
short OldSpd
short Str
short OldStr
float SpeedMod
long CurDmg


short bDoMod
short bDoMod2

float SpellTimer

begin GameMode
if bDoOnce == 0
  PrintToConsole "Vitesse des coups activée."
  set fQuestDelayTime to 0.2
  if GetOBSEVersion < 9
      set bNoOBSE to 1
  endif
  set bDoOnce to 1
endif

if bNoOBSE == 1
  Return
endif

set AnimType to Player.GetWeaponAnimType
set OldWeapon to CurWeapon
set CurWeapon to Player.GetEquippedObject 16
set OldSpd to Spd
set Spd to Player.GetAV Speed
set OldAgi to Agi
set Agi to Player.GetAV Agility
set OldStr to Str
set Str to Player.GetAV Strength

if (CurWeapon != OldWeapon) || (Agi != OldAgi) || (Spd != OldSpd) || (Str != OldStr)
  set BaseWeapon to Player.GetEquippedObject 16
  set WeaponType to GetWeaponType BaseWeapon
  set WeaponWeight to GetWeight BaseWeapon
  set WeightCheck to Floor WeaponWeight
  set WeightCheck to WeaponWeight - WeightCheck
  set WeightCheck to WeightCheck * 10000
  if WeightCheck < 1 && WeightCheck > 0 ;Rounding Errors
   set WeightCheck to 1
  endif
  if WeightCheck > 1 && WeightCheck < 2 ;Rounding Errors
   set WeightCheck to 1
  endif
  set WeightCheck to Ceil WeightCheck

  if WeightCheck == 1 || WeightCheck == 11
   ;Message "DEBUG: This weapon has been modded already" 1
   set bDoMod2 to 1
  endif

  if (WeightCheck >= 12)
   ;Message "DEBUG: Special Weapon cannot mod speed."
  elseif (WeaponType == 4 || WeaponType == 5)
   ;Message "DEBUG: Bow or Staff cannot mod speed."
  elseif AnimType == 0
   ;Message "DEBUG: Hand to Hand. Cannot mod speed."
  elseif (BaseWeapon == BoundAxe || BaseWeapon == BoundDagger || BaseWeapon == BoundMace || BaseWeapon == BoundSword)
   ;Message "DEBUG: Bound Weapon. Cannot mod speed."
  else
   ;Message "DEBUG: Old value doesnt match modding speed." 1
   if bDoMod2 == 0
    set bDoMod to 1
   endif
  endif
endif

if bDoMod2 == 1
  set CurWeapon to Player.GetEquippedObject 16
  set CurSpeed to GetWeaponSpeed CurWeapon
  set WeaponType to GetWeaponType CurWeapon

  PrintToConsole "CurSpeed: %.2f" CurSpeed
  if (WeaponType == 0 || WeaponType == 2) ;1 handed
   if Agi <=10
     set SpeedMod to 1.0
   elseif Agi <=20
     set SpeedMod to 1.1
   elseif Agi <=30
     set SpeedMod to 1.2
   elseif Agi <=40
     set SpeedMod to 1.3
   elseif Agi <=50
     set SpeedMod to 1.4
   elseif Agi <=60
     set SpeedMod to 1.5
   elseif Agi <=70
     set SpeedMod to 1.6
   elseif Agi <=80
     set SpeedMod to 1.7
   elseif Agi <=90
     set SpeedMod to 1.8
   elseif Agi <=100
     set SpeedMod to 1.9
   elseif Agi <=110
     set SpeedMod to 2.0
           elseif Agi <=120
     set SpeedMod to 2.1
           elseif Agi <=130
     set SpeedMod to 2.2
   elseif Agi <=140
     set SpeedMod to 2.3
   elseif Agi <=150
     set SpeedMod to 2.4
   elseif Agi <=160
     set SpeedMod to 2.5
   elseif Agi <=170
     set SpeedMod to 2.6
   elseif Agi <=180
     set SpeedMod to 2.7
   elseif Agi <=190
     set SpeedMod to 2.8
   elseif Agi <=200
     set SpeedMod to 2.9
   elseif Agi<=210
     set SpeedMod to 3.0
   elseif Agi <=220
     set SpeedMod to 3.1
           elseif Agi <=230
     set SpeedMod to 3.2
           elseif Agi <=240
     set SpeedMod to 3.3
           elseif Agi <=250
     set SpeedMod to 3.4
   endif
   if Spd<=10
     set SpeedMod to SpeedMod - 0.4
   elseif Spd <=20
     set SpeedMod to SpeedMod - 0.3
   elseif Spd <=30
     set SpeedMod to SpeedMod - 0.2
   elseif Spd <=40
     set SpeedMod to SpeedMod - 0.1
           elseif Spd <=50
     set SpeedMod to SpeedMod  / 1
   elseif Spd <=60
     set SpeedMod to SpeedMod + 0.1
   elseif Spd <=70
     set SpeedMod to SpeedMod + 0.2
           elseif Spd <=80
     set SpeedMod to SpeedMod + 0.3
           elseif Spd <=90
     set SpeedMod to SpeedMod + 0.4
           elseif Spd <=100
     set SpeedMod to SpeedMod + 0.5
             elseif Spd <=110
     set SpeedMod to SpeedMod + 0.6
             elseif Spd <=120
     set SpeedMod to SpeedMod + 0.7
             elseif Spd <=130
     set SpeedMod to SpeedMod + 0.8
             elseif Spd <=140
     set SpeedMod to SpeedMod + 0.9
             elseif Spd <=150
     set SpeedMod to SpeedMod + 1.0
             elseif Spd <=160
     set SpeedMod to SpeedMod + 1.1
             elseif Spd <=170
     set SpeedMod to SpeedMod + 1.2
             elseif Spd <=180
     set SpeedMod to SpeedMod + 1.3
             elseif Spd <=190
     set SpeedMod to SpeedMod + 1.4
             elseif Spd <=200
     set SpeedMod to SpeedMod + 1.5
             elseif Spd <=210
     set SpeedMod to SpeedMod + 1.6
             elseif Spd <=220
     set SpeedMod to SpeedMod + 1.7
             elseif Spd <=230
     set SpeedMod to SpeedMod + 1.8
             elseif Spd <=240
     set SpeedMod to SpeedMod + 1.9
             elseif Spd <=250
     set SpeedMod to SpeedMod + 2.0
   endif
   if WeaponWeight >= 10
    if Str <= 30
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 20
    if Str <= 40
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 30
    if Str <= 50
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 40
    if Str <= 60
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 50
    if Str <= 70
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 60
    if Str <= 80
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 70
    if Str <= 90
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 80
    if Str <= 100
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 90
    if Str <= 110
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 100
    if Str <= 120
     set SpeedMod to SpeedMod - 0.1
    endif
    
   endif
  elseif (WeaponType == 1 || WeaponType == 3) ;2 handed
   if Str<=10
     set SpeedMod to 0.8
   elseif Str <=20
     set SpeedMod to 0.9
   elseif Str <=30
     set SpeedMod to 1.0
   elseif Str <=40
     set SpeedMod to 1.1
   elseif Str <=50
     set SpeedMod to 1.2
   elseif Str <=60
     set SpeedMod to 1.3
   elseif Str <=70
     set SpeedMod to 1.4
   elseif Str <=80
     set SpeedMod to 1.5
   elseif Str <=90
     set SpeedMod to 1.6
   elseif Str <=100
     set SpeedMod to 1.7
   elseif Str <=110
     set SpeedMod to 1.8
           elseif Str <=120
     set SpeedMod to 1.9
           elseif Str <=130
     set SpeedMod to 2.0
   elseif Str <=140
     set SpeedMod to 2.1
   elseif Str <=150
     set SpeedMod to 2.2
   elseif Str <=160
     set SpeedMod to 2.3
   elseif Str <=170
     set SpeedMod to 2.4
   elseif Str <=180
     set SpeedMod to 2.5
   elseif Str <=190
     set SpeedMod to 2.6
   elseif Str <=200
     set SpeedMod to 2.7
   elseif Str <=210
     set SpeedMod to 2.8
   elseif Str <=220
     set SpeedMod to 2.9
           elseif Str <=230
     set SpeedMod to 3.0
           elseif Str <=240
     set SpeedMod to 3.1
           elseif Str <=250
     set SpeedMod to 3.2
   endif
   if Spd <=10
     set SpeedMod to SpeedMod - 0.4
   elseif Spd <=20
     set SpeedMod to SpeedMod - 0.3
   elseif Spd <=30
     set SpeedMod to SpeedMod - 0.2
   elseif Spd <=40
     set SpeedMod to SpeedMod - 0.1
           elseif Agi <=50
     set SpeedMod to SpeedMod / 1
   elseif Spd <=60
     set SpeedMod to SpeedMod + 0.1
   elseif Spd <=70
     set SpeedMod to SpeedMod + 0.2
           elseif Spd <=80
     set SpeedMod to SpeedMod + 0.3
           elseif Spd <=90
     set SpeedMod to SpeedMod + 0.4
           elseif Spd <=100
     set SpeedMod to SpeedMod + 0.5
           elseif Spd <=110
     set SpeedMod to SpeedMod + 0.6
           elseif Spd <=120
     set SpeedMod to SpeedMod + 0.7
           elseif Spd <=130
     set SpeedMod to SpeedMod + 0.8
           elseif Spd <=140
     set SpeedMod to SpeedMod + 0.9
           elseif Spd <=150
     set SpeedMod to SpeedMod + 1.0
           elseif Spd <=160
     set SpeedMod to SpeedMod + 1.1
           elseif Spd <=170
     set SpeedMod to SpeedMod + 1.2
           elseif Spd <=180
     set SpeedMod to SpeedMod + 1.3
           elseif Spd <=190
     set SpeedMod to SpeedMod + 1.4
           elseif Spd <=200
     set SpeedMod to SpeedMod + 1.5
           elseif Spd <=210
     set SpeedMod to SpeedMod + 1.6
           elseif Spd <=220
     set SpeedMod to SpeedMod + 1.7
           elseif Spd <=230
     set SpeedMod to SpeedMod + 1.8
           elseif Spd <=240
     set SpeedMod to SpeedMod + 1.9
           elseif Spd <=250
     set SpeedMod to SpeedMod + 2.0
   endif
   if WeaponWeight >= 10
    if Str <= 30
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 20
    if Str <= 40
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 30
    if Str <= 50
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 40
    if Str <= 60
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 50
    if Str <= 70
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 60
    if Str <= 80
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 70
    if Str <= 90
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 80
    if Str <= 100
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 90
    if Str <= 110
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 100
    if Str <= 120
     set SpeedMod to SpeedMod - 0.1
    endif
   endif
  endif
  if SpeedMod < 0.1
   set SpeedMod to 0.1
  endif
  Player.SetWeaponSpeed SpeedMod CurWeapon
  set CurSpeed to GetWeaponSpeed CurWeapon
  PrintToConsole "NewSpeed: %.2f" CurSpeed
  set bDoMod2 to 0
endif

if bDoMod == 1
  set CurHp to Player.GetEquippedCurrentHealth 16
  set CurCharge to Player.GetEquippedCurrentCharge 16
  set BaseWeapon to Player.GetEquippedObject 16
  set EnchType to GetEnchantmentType BaseWeapon
  set CurDmg to GetAttackDamage BaseWeapon
  set MaxHp to GetObjectHealth BaseWeapon
  set HpRatio to CurHp / MaxHp
  PrintToConsole "WeaponWeight: %.4f" WeaponWeight
  set CurWeapon to CloneForm BaseWeapon
  set CurSpeed to GetWeaponSpeed CurWeapon
  set WeaponType to GetWeaponType CurWeapon

  Message " "
  Message " "
  Message " "
  Player.RemoveItem BaseWeapon 1
  Player.AddItem CurWeapon 1
  Player.EquipItem CurWeapon

  PrintToConsole "Hp: %.0f/%.0f %.2f" CurHp MaxHp HpRatio
  PrintToConsole "CurSpeed: %.2f" CurSpeed
  PrintToConsole "WeaponType: %.0f" WeaponType
  PrintToConsole "WeaponWeight: %.0f" WeaponWeight
  if (WeaponType == 0 || WeaponType == 2) ;1 handed
   if Agi <=10
     set SpeedMod to 1.0
   elseif Agi <=20
     set SpeedMod to 1.1
   elseif Agi <=30
     set SpeedMod to 1.2
   elseif Agi <=40
     set SpeedMod to 1.3
   elseif Agi <=50
     set SpeedMod to 1.4
   elseif Agi <=60
     set SpeedMod to 1.5
   elseif Agi <=70
     set SpeedMod to 1.6
   elseif Agi <=80
     set SpeedMod to 1.7
   elseif Agi <=90
     set SpeedMod to 1.8
   elseif Agi <=100
     set SpeedMod to 1.9
   elseif Agi <=110
     set SpeedMod to 2.0
           elseif Agi <=120
     set SpeedMod to 2.1
           elseif Agi <=130
     set SpeedMod to 2.2
   elseif Agi <=140
     set SpeedMod to 2.3
   elseif Agi <=150
     set SpeedMod to 2.4
   elseif Agi <=160
     set SpeedMod to 2.5
   elseif Agi <=170
     set SpeedMod to 2.6
   elseif Agi <=180
     set SpeedMod to 2.7
   elseif Agi <=190
     set SpeedMod to 2.8
   elseif Agi <=200
     set SpeedMod to 2.9
   elseif Agi<=210
     set SpeedMod to 3.0
   elseif Agi <=220
     set SpeedMod to 3.1
           elseif Agi <=230
     set SpeedMod to 3.2
           elseif Agi <=240
     set SpeedMod to 3.3
             elseif Agi <=250
     set SpeedMod to 3.4
   endif
   if Spd <=10
     set SpeedMod to SpeedMod - 0.4
   elseif Spd <=20
     set SpeedMod to SpeedMod - 0.3
   elseif Spd <=30
     set SpeedMod to SpeedMod - 0.2
   elseif Spd <=40
     set SpeedMod to SpeedMod - 0.1
           elseif Spd <=50
     set SpeedMod to SpeedMod / 1
   elseif Spd <=60
     set SpeedMod to SpeedMod + 0.1
   elseif Spd <=70
     set SpeedMod to SpeedMod + 0.2
           elseif Spd <=80
     set SpeedMod to SpeedMod + 0.3
           elseif Spd <=90
     set SpeedMod to SpeedMod + 0.4
           elseif Spd <=100
     set SpeedMod to SpeedMod + 0.5
           elseif Spd <=110
     set SpeedMod to SpeedMod + 0.6
           elseif Spd <=120
     set SpeedMod to SpeedMod + 0.7
           elseif Spd <=130
     set SpeedMod to SpeedMod + 0.8
           elseif Spd <=140
     set SpeedMod to SpeedMod + 0.9
           elseif Spd <=150
     set SpeedMod to SpeedMod + 1.0
           elseif Spd <=160
     set SpeedMod to SpeedMod + 1.1
           elseif Spd <=170
     set SpeedMod to SpeedMod + 1.2
           elseif Spd <=180
     set SpeedMod to SpeedMod + 1.3
           elseif Spd <=190
     set SpeedMod to SpeedMod + 1.4
           elseif Spd <=200
     set SpeedMod to SpeedMod + 1.5
           elseif Spd <=210
     set SpeedMod to SpeedMod + 1.6
           elseif Spd <=220
     set SpeedMod to SpeedMod + 1.7
           elseif Spd <=230
     set SpeedMod to SpeedMod + 1.8
           elseif Spd <=240
     set SpeedMod to SpeedMod + 1.9
           elseif Spd <=250
     set SpeedMod to SpeedMod + 2.0
   endif
   if WeaponWeight >= 10
    if Str <= 30
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 20
    if Str <= 40
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 30
    if Str <= 50
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 40
    if Str <= 60
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 50
    if Str <= 70
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 60
    if Str <= 80
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 70
    if Str <= 90
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 80
    if Str <= 100
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 90
    if Str <= 110
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 100
    if Str <= 120
     set SpeedMod to SpeedMod - 0.1
    endif
   endif
  elseif (WeaponType == 1 || WeaponType == 3) ;2 handed
   if Str<=10
     set SpeedMod to 0.8
   elseif Str <=20
     set SpeedMod to 0.9
   elseif Str <=30
     set SpeedMod to 1.0
   elseif Str <=40
     set SpeedMod to 1.1
   elseif Str <=50
     set SpeedMod to 1.2
   elseif Str <=60
     set SpeedMod to 1.3
   elseif Str <=70
     set SpeedMod to 1.4
   elseif Str <=80
     set SpeedMod to 1.5
   elseif Str <=90
     set SpeedMod to 1.6
   elseif Str <=100
     set SpeedMod to 1.7
   elseif Str <=110
     set SpeedMod to 1.8
           elseif Str <=120
     set SpeedMod to 1.9
           elseif Str <=130
     set SpeedMod to 2.0
   elseif Str <=140
     set SpeedMod to 2.1
   elseif Str <=150
     set SpeedMod to 2.2
   elseif Str <=160
     set SpeedMod to 2.3
   elseif Str <=170
     set SpeedMod to 2.4
   elseif Str <=180
     set SpeedMod to 2.5
   elseif Str <=190
     set SpeedMod to 2.6
   elseif Str <=200
     set SpeedMod to 2.7
   elseif Str <=210
     set SpeedMod to 2.8
   elseif Str <=220
     set SpeedMod to 2.9
           elseif Str <=230
     set SpeedMod to 3.0
           elseif Str <=240
     set SpeedMod to 3.1
           elseif Str <=250
     set SpeedMod to 3.2
   endif
   if Spd <=10
     set SpeedMod to SpeedMod - 0.5
   elseif Spd <=20
     set SpeedMod to SpeedMod - 0.4
   elseif Spd <=30
     set SpeedMod to SpeedMod - 0.3
   elseif Spd <=40
     set SpeedMod to SpeedMod - 0.2
           elseif Spd <=50
     set SpeedMod to SpeedMod - 0.1
   elseif Spd <=60
     set SpeedMod to SpeedMod / 1
   elseif Spd <=70
     set SpeedMod to SpeedMod + 0.1
           elseif Spd <=80
     set SpeedMod to SpeedMod + 0.2
           elseif Spd <=90
     set SpeedMod to SpeedMod + 0.3
           elseif Spd <=100
     set SpeedMod to SpeedMod + 0.4
           elseif Spd <=110
     set SpeedMod to SpeedMod + 0.5
           elseif Spd <=120
     set SpeedMod to SpeedMod + 0.6
           elseif Spd <=130
     set SpeedMod to SpeedMod + 0.7
           elseif Spd <=140
     set SpeedMod to SpeedMod + 0.8
           elseif Spd <=150
     set SpeedMod to SpeedMod + 0.9
           elseif Spd <=160
     set SpeedMod to SpeedMod + 1.0
           elseif Spd <=170
     set SpeedMod to SpeedMod + 1.1
           elseif Spd <=180
     set SpeedMod to SpeedMod + 1.2
           elseif Spd <=190
     set SpeedMod to SpeedMod + 1.3
           elseif Spd <=200
     set SpeedMod to SpeedMod + 1.4
           elseif Spd <=210
     set SpeedMod to SpeedMod + 1.5
           elseif Spd <=220
     set SpeedMod to SpeedMod + 1.6
           elseif Spd <=230
     set SpeedMod to SpeedMod + 1.7
           elseif Spd <=240
     set SpeedMod to SpeedMod + 1.8
           elseif Spd <=250
     set SpeedMod to SpeedMod + 1.9
   endif
   if WeaponWeight >= 10
    if Str <= 30
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 20
    if Str <= 40
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 30
    if Str <= 50
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 40
    if Str <= 60
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 50
    if Str <= 70
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 60
    if Str <= 80
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 70
    if Str <= 90
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 80
    if Str <= 100
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 90
    if Str <= 110
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 100
    if Str <= 120
     set SpeedMod to SpeedMod - 0.1
    endif
   endif
  endif
  if SpeedMod < 0.1
   set SpeedMod to 0.1
  endif
  set WeaponWeight to GetWeight BaseWeapon
  set WeaponWeight to WeaponWeight + 0.0001
  SetWeight WeaponWeight CurWeapon
  set WeaponWeight to GetWeight CurWeapon
  setEnchantmentType EnchType CurWeapon
  SetAttackDamage CurDmg CurWeapon
  PrintToConsole "WeaponWeight: %.4f" WeaponWeight
  Player.SetWeaponSpeed SpeedMod CurWeapon
  Player.SetEquippedCurrentHealth CurHp 16
  Player.SetEquippedCurrentCharge CurCharge 16

  set CurSpeed to GetWeaponSpeed CurWeapon
  PrintToConsole "NewSpeed: %.2f" CurSpeed
  set bDoMod to 0
endif
end

Pour l'original c'est: http://www.tesnexus....le.php?id=11191

Question maintenant que j'ai eu ce que je voulais (mes crocs ont poussés lol)
Je cojite une base de script dans le même genre pour que les dégats donc les gamesettings attribués aux dégats par armes et ataques spéciales(forward, backward powerattack etc...) augmentent en fonction du niveau que le perso possède en skill Blade ou Blunt...
Vous avez l'air d'avoir des ressources et la langue assez pendue (comme moi) pour partager vos connaissances alors j'attend vos contributions avec impatience...

Merci d'avance pour vos futures reponses sur lesquelles je compte fort...




désolé pour l'oubli de fermeture de balise code...
Au passage j'ajoute que biensur les scripts "comparatifs" de WIl et INT du lanceur de sort-->cible vont suivre,
avec peut être à la clef des choses amusantes telles que les coups critique de deadly reflex dont je veus m'inspirer.
Je souhaite cependant que cela tienne compte de plus de paramètres tels que le niveau du lanceur dans la skill magie à laquelle le sort appartient...
Le tout remanié à ma sauce...
revoici le code

scn VitesseDesCoups

float fQuestDelayTime

short bDoOnce
short bNoOBSE

short InfoKey
short bKeySet

ref CurWeapon
ref OldWeapon
short WeaponType
float WeaponWeight
float WeightCheck
float HpRatio
short CurHp
short MaxHp
short EnchType
float CurCharge
short AnimType

ref BaseWeapon

float CurSpeed
short Agi
short OldAgi
short Spd
short OldSpd
short Str
short OldStr
float SpeedMod
long CurDmg


short bDoMod
short bDoMod2

float SpellTimer

begin GameMode
if bDoOnce == 0
  PrintToConsole "Vitesse des coups activée."
  set fQuestDelayTime to 0.2
  if GetOBSEVersion < 9
      set bNoOBSE to 1
  endif
  set bDoOnce to 1
endif

if bNoOBSE == 1
  Return
endif

set AnimType to Player.GetWeaponAnimType
set OldWeapon to CurWeapon
set CurWeapon to Player.GetEquippedObject 16
set OldSpd to Spd
set Spd to Player.GetAV Speed
set OldAgi to Agi
set Agi to Player.GetAV Agility
set OldStr to Str
set Str to Player.GetAV Strength

if (CurWeapon != OldWeapon) || (Agi != OldAgi) || (Spd != OldSpd) || (Str != OldStr)
  set BaseWeapon to Player.GetEquippedObject 16
  set WeaponType to GetWeaponType BaseWeapon
  set WeaponWeight to GetWeight BaseWeapon
  set WeightCheck to Floor WeaponWeight
  set WeightCheck to WeaponWeight - WeightCheck
  set WeightCheck to WeightCheck * 10000
  if WeightCheck < 1 && WeightCheck > 0 ;Rounding Errors
   set WeightCheck to 1
  endif
  if WeightCheck > 1 && WeightCheck < 2 ;Rounding Errors
   set WeightCheck to 1
  endif
  set WeightCheck to Ceil WeightCheck

  if WeightCheck == 1 || WeightCheck == 11
   ;Message "DEBUG: This weapon has been modded already" 1
   set bDoMod2 to 1
  endif

  if (WeightCheck >= 12)
   ;Message "DEBUG: Special Weapon cannot mod speed."
  elseif (WeaponType == 4 || WeaponType == 5)
   ;Message "DEBUG: Bow or Staff cannot mod speed."
  elseif AnimType == 0
   ;Message "DEBUG: Hand to Hand. Cannot mod speed."
  elseif (BaseWeapon == BoundAxe || BaseWeapon == BoundDagger || BaseWeapon == BoundMace || BaseWeapon == BoundSword)
   ;Message "DEBUG: Bound Weapon. Cannot mod speed."
  else
   ;Message "DEBUG: Old value doesnt match modding speed." 1
   if bDoMod2 == 0
    set bDoMod to 1
   endif
  endif
endif

if bDoMod2 == 1
  set CurWeapon to Player.GetEquippedObject 16
  set CurSpeed to GetWeaponSpeed CurWeapon
  set WeaponType to GetWeaponType CurWeapon

  PrintToConsole "CurSpeed: %.2f" CurSpeed
  if (WeaponType == 0 || WeaponType == 2) ;1 handed
   if Agi <=10
     set SpeedMod to 1.0
   elseif Agi <=20
     set SpeedMod to 1.1
   elseif Agi <=30
     set SpeedMod to 1.2
   elseif Agi <=40
     set SpeedMod to 1.3
   elseif Agi <=50
     set SpeedMod to 1.4
   elseif Agi <=60
     set SpeedMod to 1.5
   elseif Agi <=70
     set SpeedMod to 1.6
   elseif Agi <=80
     set SpeedMod to 1.7
   elseif Agi <=90
     set SpeedMod to 1.8
   elseif Agi <=100
     set SpeedMod to 1.9
   elseif Agi <=110
     set SpeedMod to 2.0
           elseif Agi <=120
     set SpeedMod to 2.1
           elseif Agi <=130
     set SpeedMod to 2.2
   elseif Agi <=140
     set SpeedMod to 2.3
   elseif Agi <=150
     set SpeedMod to 2.4
   elseif Agi <=160
     set SpeedMod to 2.5
   elseif Agi <=170
     set SpeedMod to 2.6
   elseif Agi <=180
     set SpeedMod to 2.7
   elseif Agi <=190
     set SpeedMod to 2.8
   elseif Agi <=200
     set SpeedMod to 2.9
   elseif Agi<=210
     set SpeedMod to 3.0
   elseif Agi <=220
     set SpeedMod to 3.1
           elseif Agi <=230
     set SpeedMod to 3.2
           elseif Agi <=240
     set SpeedMod to 3.3
           elseif Agi <=250
     set SpeedMod to 3.4
   endif
   if Spd<=10
     set SpeedMod to SpeedMod - 0.4
   elseif Spd <=20
     set SpeedMod to SpeedMod - 0.3
   elseif Spd <=30
     set SpeedMod to SpeedMod - 0.2
   elseif Spd <=40
     set SpeedMod to SpeedMod - 0.1
           elseif Spd <=50
     set SpeedMod to SpeedMod  / 1
   elseif Spd <=60
     set SpeedMod to SpeedMod + 0.1
   elseif Spd <=70
     set SpeedMod to SpeedMod + 0.2
           elseif Spd <=80
     set SpeedMod to SpeedMod + 0.3
           elseif Spd <=90
     set SpeedMod to SpeedMod + 0.4
           elseif Spd <=100
     set SpeedMod to SpeedMod + 0.5
             elseif Spd <=110
     set SpeedMod to SpeedMod + 0.6
             elseif Spd <=120
     set SpeedMod to SpeedMod + 0.7
             elseif Spd <=130
     set SpeedMod to SpeedMod + 0.8
             elseif Spd <=140
     set SpeedMod to SpeedMod + 0.9
             elseif Spd <=150
     set SpeedMod to SpeedMod + 1.0
             elseif Spd <=160
     set SpeedMod to SpeedMod + 1.1
             elseif Spd <=170
     set SpeedMod to SpeedMod + 1.2
             elseif Spd <=180
     set SpeedMod to SpeedMod + 1.3
             elseif Spd <=190
     set SpeedMod to SpeedMod + 1.4
             elseif Spd <=200
     set SpeedMod to SpeedMod + 1.5
             elseif Spd <=210
     set SpeedMod to SpeedMod + 1.6
             elseif Spd <=220
     set SpeedMod to SpeedMod + 1.7
             elseif Spd <=230
     set SpeedMod to SpeedMod + 1.8
             elseif Spd <=240
     set SpeedMod to SpeedMod + 1.9
             elseif Spd <=250
     set SpeedMod to SpeedMod + 2.0
   endif
   if WeaponWeight >= 10
    if Str <= 30
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 20
    if Str <= 40
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 30
    if Str <= 50
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 40
    if Str <= 60
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 50
    if Str <= 70
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 60
    if Str <= 80
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 70
    if Str <= 90
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 80
    if Str <= 100
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 90
    if Str <= 110
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 100
    if Str <= 120
     set SpeedMod to SpeedMod - 0.1
    endif
    
   endif
  elseif (WeaponType == 1 || WeaponType == 3) ;2 handed
   if Str<=10
     set SpeedMod to 0.8
   elseif Str <=20
     set SpeedMod to 0.9
   elseif Str <=30
     set SpeedMod to 1.0
   elseif Str <=40
     set SpeedMod to 1.1
   elseif Str <=50
     set SpeedMod to 1.2
   elseif Str <=60
     set SpeedMod to 1.3
   elseif Str <=70
     set SpeedMod to 1.4
   elseif Str <=80
     set SpeedMod to 1.5
   elseif Str <=90
     set SpeedMod to 1.6
   elseif Str <=100
     set SpeedMod to 1.7
   elseif Str <=110
     set SpeedMod to 1.8
           elseif Str <=120
     set SpeedMod to 1.9
           elseif Str <=130
     set SpeedMod to 2.0
   elseif Str <=140
     set SpeedMod to 2.1
   elseif Str <=150
     set SpeedMod to 2.2
   elseif Str <=160
     set SpeedMod to 2.3
   elseif Str <=170
     set SpeedMod to 2.4
   elseif Str <=180
     set SpeedMod to 2.5
   elseif Str <=190
     set SpeedMod to 2.6
   elseif Str <=200
     set SpeedMod to 2.7
   elseif Str <=210
     set SpeedMod to 2.8
   elseif Str <=220
     set SpeedMod to 2.9
           elseif Str <=230
     set SpeedMod to 3.0
           elseif Str <=240
     set SpeedMod to 3.1
           elseif Str <=250
     set SpeedMod to 3.2
   endif
   if Spd <=10
     set SpeedMod to SpeedMod - 0.4
   elseif Spd <=20
     set SpeedMod to SpeedMod - 0.3
   elseif Spd <=30
     set SpeedMod to SpeedMod - 0.2
   elseif Spd <=40
     set SpeedMod to SpeedMod - 0.1
           elseif Agi <=50
     set SpeedMod to SpeedMod / 1
   elseif Spd <=60
     set SpeedMod to SpeedMod + 0.1
   elseif Spd <=70
     set SpeedMod to SpeedMod + 0.2
           elseif Spd <=80
     set SpeedMod to SpeedMod + 0.3
           elseif Spd <=90
     set SpeedMod to SpeedMod + 0.4
           elseif Spd <=100
     set SpeedMod to SpeedMod + 0.5
           elseif Spd <=110
     set SpeedMod to SpeedMod + 0.6
           elseif Spd <=120
     set SpeedMod to SpeedMod + 0.7
           elseif Spd <=130
     set SpeedMod to SpeedMod + 0.8
           elseif Spd <=140
     set SpeedMod to SpeedMod + 0.9
           elseif Spd <=150
     set SpeedMod to SpeedMod + 1.0
           elseif Spd <=160
     set SpeedMod to SpeedMod + 1.1
           elseif Spd <=170
     set SpeedMod to SpeedMod + 1.2
           elseif Spd <=180
     set SpeedMod to SpeedMod + 1.3
           elseif Spd <=190
     set SpeedMod to SpeedMod + 1.4
           elseif Spd <=200
     set SpeedMod to SpeedMod + 1.5
           elseif Spd <=210
     set SpeedMod to SpeedMod + 1.6
           elseif Spd <=220
     set SpeedMod to SpeedMod + 1.7
           elseif Spd <=230
     set SpeedMod to SpeedMod + 1.8
           elseif Spd <=240
     set SpeedMod to SpeedMod + 1.9
           elseif Spd <=250
     set SpeedMod to SpeedMod + 2.0
   endif
   if WeaponWeight >= 10
    if Str <= 30
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 20
    if Str <= 40
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 30
    if Str <= 50
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 40
    if Str <= 60
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 50
    if Str <= 70
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 60
    if Str <= 80
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 70
    if Str <= 90
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 80
    if Str <= 100
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 90
    if Str <= 110
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 100
    if Str <= 120
     set SpeedMod to SpeedMod - 0.1
    endif
   endif
  endif
  if SpeedMod < 0.1
   set SpeedMod to 0.1
  endif
  Player.SetWeaponSpeed SpeedMod CurWeapon
  set CurSpeed to GetWeaponSpeed CurWeapon
  PrintToConsole "NewSpeed: %.2f" CurSpeed
  set bDoMod2 to 0
endif

if bDoMod == 1
  set CurHp to Player.GetEquippedCurrentHealth 16
  set CurCharge to Player.GetEquippedCurrentCharge 16
  set BaseWeapon to Player.GetEquippedObject 16
  set EnchType to GetEnchantmentType BaseWeapon
  set CurDmg to GetAttackDamage BaseWeapon
  set MaxHp to GetObjectHealth BaseWeapon
  set HpRatio to CurHp / MaxHp
  PrintToConsole "WeaponWeight: %.4f" WeaponWeight
  set CurWeapon to CloneForm BaseWeapon
  set CurSpeed to GetWeaponSpeed CurWeapon
  set WeaponType to GetWeaponType CurWeapon

  Message " "
  Message " "
  Message " "
  Player.RemoveItem BaseWeapon 1
  Player.AddItem CurWeapon 1
  Player.EquipItem CurWeapon

  PrintToConsole "Hp: %.0f/%.0f %.2f" CurHp MaxHp HpRatio
  PrintToConsole "CurSpeed: %.2f" CurSpeed
  PrintToConsole "WeaponType: %.0f" WeaponType
  PrintToConsole "WeaponWeight: %.0f" WeaponWeight
  if (WeaponType == 0 || WeaponType == 2) ;1 handed
   if Agi <=10
     set SpeedMod to 1.0
   elseif Agi <=20
     set SpeedMod to 1.1
   elseif Agi <=30
     set SpeedMod to 1.2
   elseif Agi <=40
     set SpeedMod to 1.3
   elseif Agi <=50
     set SpeedMod to 1.4
   elseif Agi <=60
     set SpeedMod to 1.5
   elseif Agi <=70
     set SpeedMod to 1.6
   elseif Agi <=80
     set SpeedMod to 1.7
   elseif Agi <=90
     set SpeedMod to 1.8
   elseif Agi <=100
     set SpeedMod to 1.9
   elseif Agi <=110
     set SpeedMod to 2.0
           elseif Agi <=120
     set SpeedMod to 2.1
           elseif Agi <=130
     set SpeedMod to 2.2
   elseif Agi <=140
     set SpeedMod to 2.3
   elseif Agi <=150
     set SpeedMod to 2.4
   elseif Agi <=160
     set SpeedMod to 2.5
   elseif Agi <=170
     set SpeedMod to 2.6
   elseif Agi <=180
     set SpeedMod to 2.7
   elseif Agi <=190
     set SpeedMod to 2.8
   elseif Agi <=200
     set SpeedMod to 2.9
   elseif Agi<=210
     set SpeedMod to 3.0
   elseif Agi <=220
     set SpeedMod to 3.1
           elseif Agi <=230
     set SpeedMod to 3.2
           elseif Agi <=240
     set SpeedMod to 3.3
             elseif Agi <=250
     set SpeedMod to 3.4
   endif
   if Spd <=10
     set SpeedMod to SpeedMod - 0.4
   elseif Spd <=20
     set SpeedMod to SpeedMod - 0.3
   elseif Spd <=30
     set SpeedMod to SpeedMod - 0.2
   elseif Spd <=40
     set SpeedMod to SpeedMod - 0.1
           elseif Spd <=50
     set SpeedMod to SpeedMod / 1
   elseif Spd <=60
     set SpeedMod to SpeedMod + 0.1
   elseif Spd <=70
     set SpeedMod to SpeedMod + 0.2
           elseif Spd <=80
     set SpeedMod to SpeedMod + 0.3
           elseif Spd <=90
     set SpeedMod to SpeedMod + 0.4
           elseif Spd <=100
     set SpeedMod to SpeedMod + 0.5
           elseif Spd <=110
     set SpeedMod to SpeedMod + 0.6
           elseif Spd <=120
     set SpeedMod to SpeedMod + 0.7
           elseif Spd <=130
     set SpeedMod to SpeedMod + 0.8
           elseif Spd <=140
     set SpeedMod to SpeedMod + 0.9
           elseif Spd <=150
     set SpeedMod to SpeedMod + 1.0
           elseif Spd <=160
     set SpeedMod to SpeedMod + 1.1
           elseif Spd <=170
     set SpeedMod to SpeedMod + 1.2
           elseif Spd <=180
     set SpeedMod to SpeedMod + 1.3
           elseif Spd <=190
     set SpeedMod to SpeedMod + 1.4
           elseif Spd <=200
     set SpeedMod to SpeedMod + 1.5
           elseif Spd <=210
     set SpeedMod to SpeedMod + 1.6
           elseif Spd <=220
     set SpeedMod to SpeedMod + 1.7
           elseif Spd <=230
     set SpeedMod to SpeedMod + 1.8
           elseif Spd <=240
     set SpeedMod to SpeedMod + 1.9
           elseif Spd <=250
     set SpeedMod to SpeedMod + 2.0
   endif
   if WeaponWeight >= 10
    if Str <= 30
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 20
    if Str <= 40
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 30
    if Str <= 50
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 40
    if Str <= 60
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 50
    if Str <= 70
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 60
    if Str <= 80
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 70
    if Str <= 90
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 80
    if Str <= 100
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 90
    if Str <= 110
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 100
    if Str <= 120
     set SpeedMod to SpeedMod - 0.1
    endif
   endif
  elseif (WeaponType == 1 || WeaponType == 3) ;2 handed
   if Str<=10
     set SpeedMod to 0.8
   elseif Str <=20
     set SpeedMod to 0.9
   elseif Str <=30
     set SpeedMod to 1.0
   elseif Str <=40
     set SpeedMod to 1.1
   elseif Str <=50
     set SpeedMod to 1.2
   elseif Str <=60
     set SpeedMod to 1.3
   elseif Str <=70
     set SpeedMod to 1.4
   elseif Str <=80
     set SpeedMod to 1.5
   elseif Str <=90
     set SpeedMod to 1.6
   elseif Str <=100
     set SpeedMod to 1.7
   elseif Str <=110
     set SpeedMod to 1.8
           elseif Str <=120
     set SpeedMod to 1.9
           elseif Str <=130
     set SpeedMod to 2.0
   elseif Str <=140
     set SpeedMod to 2.1
   elseif Str <=150
     set SpeedMod to 2.2
   elseif Str <=160
     set SpeedMod to 2.3
   elseif Str <=170
     set SpeedMod to 2.4
   elseif Str <=180
     set SpeedMod to 2.5
   elseif Str <=190
     set SpeedMod to 2.6
   elseif Str <=200
     set SpeedMod to 2.7
   elseif Str <=210
     set SpeedMod to 2.8
   elseif Str <=220
     set SpeedMod to 2.9
           elseif Str <=230
     set SpeedMod to 3.0
           elseif Str <=240
     set SpeedMod to 3.1
           elseif Str <=250
     set SpeedMod to 3.2
   endif
   if Spd <=10
     set SpeedMod to SpeedMod - 0.5
   elseif Spd <=20
     set SpeedMod to SpeedMod - 0.4
   elseif Spd <=30
     set SpeedMod to SpeedMod - 0.3
   elseif Spd <=40
     set SpeedMod to SpeedMod - 0.2
           elseif Spd <=50
     set SpeedMod to SpeedMod - 0.1
   elseif Spd <=60
     set SpeedMod to SpeedMod / 1
   elseif Spd <=70
     set SpeedMod to SpeedMod + 0.1
           elseif Spd <=80
     set SpeedMod to SpeedMod + 0.2
           elseif Spd <=90
     set SpeedMod to SpeedMod + 0.3
           elseif Spd <=100
     set SpeedMod to SpeedMod + 0.4
           elseif Spd <=110
     set SpeedMod to SpeedMod + 0.5
           elseif Spd <=120
     set SpeedMod to SpeedMod + 0.6
           elseif Spd <=130
     set SpeedMod to SpeedMod + 0.7
           elseif Spd <=140
     set SpeedMod to SpeedMod + 0.8
           elseif Spd <=150
     set SpeedMod to SpeedMod + 0.9
           elseif Spd <=160
     set SpeedMod to SpeedMod + 1.0
           elseif Spd <=170
     set SpeedMod to SpeedMod + 1.1
           elseif Spd <=180
     set SpeedMod to SpeedMod + 1.2
           elseif Spd <=190
     set SpeedMod to SpeedMod + 1.3
           elseif Spd <=200
     set SpeedMod to SpeedMod + 1.4
           elseif Spd <=210
     set SpeedMod to SpeedMod + 1.5
           elseif Spd <=220
     set SpeedMod to SpeedMod + 1.6
           elseif Spd <=230
     set SpeedMod to SpeedMod + 1.7
           elseif Spd <=240
     set SpeedMod to SpeedMod + 1.8
           elseif Spd <=250
     set SpeedMod to SpeedMod + 1.9
   endif
   if WeaponWeight >= 10
    if Str <= 30
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 20
    if Str <= 40
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 30
    if Str <= 50
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 40
    if Str <= 60
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 50
    if Str <= 70
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 60
    if Str <= 80
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 70
    if Str <= 90
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 80
    if Str <= 100
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 90
    if Str <= 110
     set SpeedMod to SpeedMod - 0.1
    endif
   elseif WeaponWeight >= 100
    if Str <= 120
     set SpeedMod to SpeedMod - 0.1
    endif
   endif
  endif
  if SpeedMod < 0.1
   set SpeedMod to 0.1
  endif
  set WeaponWeight to GetWeight BaseWeapon
  set WeaponWeight to WeaponWeight + 0.0001
  SetWeight WeaponWeight CurWeapon
  set WeaponWeight to GetWeight CurWeapon
  setEnchantmentType EnchType CurWeapon
  SetAttackDamage CurDmg CurWeapon
  PrintToConsole "WeaponWeight: %.4f" WeaponWeight
  Player.SetWeaponSpeed SpeedMod CurWeapon
  Player.SetEquippedCurrentHealth CurHp 16
  Player.SetEquippedCurrentCharge CurCharge 16

  set CurSpeed to GetWeaponSpeed CurWeapon
  PrintToConsole "NewSpeed: %.2f" CurSpeed
  set bDoMod to 0
endif
end




oula je viens de piger
que je commence à être fatigué là[quote]Je suis "pareil" fort en scripting qu'en balisage élémentaire[/quote]

Audaces Fortuna Juvat...

#5 tenzaku

tenzaku

Posté 10 juin 2010 - 06:04

Je vais encore faire dans le plus basique (histoire de te laisser l'opportunité et le plaisir de te masturber le cerveau par toi-même).
Pour ce que j'en sais:

Citation

Je cojite une base de script dans le même genre pour que les dégats donc les gamesettings attribués aux dégats par armes et ataques spéciales(forward, backward powerattack etc...) augmentent en fonction du niveau que le perso possède en skill Blade ou Blunt...
C'est déjà le cas. Bien que la force y joue aussi un rôle les dégâts augmentent sensiblement avec le skill (surtout visible avec le skill de corps à corps)

Modifié par tenzaku, 10 juin 2010 - 06:04.

Tenz' pour les intimes.

#6 beeratwork

beeratwork

Posté 10 juin 2010 - 06:34

Tu as vérifier si ça fonctionne bien ingame ? J'ai juste survolé le script, mais la 1er chose qui m'a frappé est la suivante :
Tu peux remplacer tous les blocs conditionnels de ce type :
if Agi <=10
set SpeedMod to 1.0
elseif Agi <=20
set SpeedMod to 1.1
elseif Agi <=30
set SpeedMod to 1.2
elseif Agi <=40
set SpeedMod to 1.3
elseif Agi <=50
set SpeedMod to 1.4
elseif Agi <=60
set SpeedMod to 1.5
...
Par une ligne :
set SpeedMod to (0.9 + (Agi/100))
Si l'agilité vaut 40, tu as donc SpeedMod = (0.9 + (40/100)) = 0.9 + 0.4 = 1.3, mais évidemment, plus d'évolution "par palier" comme dans le mod original. Ici c'est vraiment proportionnel puisque à une agilité de 39 tu auras un SpeedMod de 1.29
Si tu veux mettre une vitesse maxi, tu vérifie la valeur de l'agilité ou alors tu compare SpeedMod à un maximum :
if (SpeedMod > SpeedModMax)
set SpeedMod to SpeedModMax
endif

Modifié par beeratwork, 10 juin 2010 - 06:35.


#7 SpiritusRector

SpiritusRector

Posté 10 juin 2010 - 17:34

Affirmatif il marche top ingame, par contre ta petite équation me plait bien, et je t'en remercie. L'abolition du système palier qu'elle entraine est un point trés positif pour moi...

Merci de tes conseils

Affirmatif il marche top ingame, par contre ta petite équation me plait bien, et je t'en remercie. L'abolition du système palier qu'elle entraine est un point trés positif pour moi...

Merci de tes conseils
Audaces Fortuna Juvat...

#8 SpiritusRector

SpiritusRector

Posté 16 juin 2010 - 22:59

Ok, ca a fini par payer...Voici deux scripts qui permettent de rendre le jeu déjà beaucoup plus intéressant en termes de vitesse des coups....Ils sont complémentaires et doivent remplacer les deux scripts du même nom dans le mod suivant:
http://www.tesnexus....le.php?id=10684
Je n'ai volontairement fixé aucun maximum de vitesse pour aucun type d'arme (ben ouais les vampires avec gros stats gonflés doivent avoir une vitesse surnaturelle)
---> Pour vous les scripteurs expérimentés de toute façon ca sera pas dur de les mettre à votre sauce...

Coté HIC maintenant: ( et ouais y'en a encore...) Je m'explique:
En fait les effets ne se mélange plus et sont biens indexés sur ce que je voulais et à l'échelle que je voulais sauf pour ces putains de saloperies d'arcs...weapon type 4 qui eux me font de la merde et ne s'indexent pas sur marksman comme ils le devraient mais s'indexent quand même sur les carac que j'ai indiqué ds le script...Bizarre...(le script de base que j'ai modifié comme j'ai pu n'influençait ni les bâtons ni les arcs) et comme je suis un scripteur de mes 2...Bon côté bâtons je m'en fout car je pense que la vitesse à laquelle la charge d'énergie contenue dans ce dernier part n'a rien à voir avec vos carac ou vos compétences d'armes (quoique WIL et INT peut être mais bon)...Cependant côté arc...c'est relou...
BeerAtWork je fini par croire en tes interventions comme en la divine providence...
sauve moi bordel!Image IPB  lol

Voici les scripts: le premier c'est un questscript et le 2eme un object script (prenez le mod et vous pigerez peut être comment ca marche vous...)

scn ANBDWSMainSct

float fQuestDelayTime

short bDoOnce
short bNoOBSE

short InfoKey
short bKeySet

ref CurWeapon
ref OldWeapon
short WeaponType
float WeaponWeight
float WeightCheck
float HpRatio
short CurHp
short MaxHp
short CurCharge
short AnimType

ref BaseWeapon

float CurSpeed
short Marksman
short OldMarksman
short Blade
short OldBlade
short Blunt
short OldBlunt
short Agi
short OldAgi
short Spd
short OldSpd
short Str
short OldStr
short End
short OldEnd
float SpeedMod
long CurDmg

short bDoMod
short bDoMod2

float SpellTimer

begin GameMode
 if bDoOnce == 0
  PrintToConsole "Config01 active."
  set fQuestDelayTime to 0.2
  if GetOBSEVersion < 9
   Message "Cette config nécéssite OBSE v009 ou une version plus récente pour fonctionner."
   set bNoOBSE to 1
  endif
  set bDoOnce to 1
 endif

 if bNoOBSE == 1
  Return
 endif

 if bKeySet == 0
  MessageBox "Set the key to press to check you current weapons speed. Click ok and the next key you press will be used." "Ok"
  set bKeySet to 1
 endif
 if bKeySet == 1
  set InfoKey to GetKeyPress 0
  if InfoKey == 65535
  else
   PrintToConsole "InfoKey: %.0f" InfoKey
   MessageBox "The key is now set. You can use it to check your current weapons speed."
   set bKeySet to 2
  endif
 endif

 if IsKeyPressed2 InfoKey == 1
  set CurSpeed to Player.GetWeaponSpeed CurWeapon
  Message "Current Weapon Speed: %.2f" CurSpeed
 endif

 ANBDWSCaster.MoveTo Player, 0, 0, 128
 ANBDWSCaster.Cast ANBDWSAOE Player

 set AnimType to Player.GetWeaponAnimType
 set OldWeapon to CurWeapon
 set CurWeapon to Player.GetEquippedObject 16
			   	set OldBlade to Blade
			   	set Blade to player.GetAV Blade
			   	set OldBlunt to Blunt
			   	set Blunt to player.GetAV Blunt
			   	set OldMarksman to Marksman
			   	set Marksman to player.GetAV Marksman
 set OldSpd to Spd
 set Spd to Player.GetAV Speed
 set OldAgi to Agi
 set Agi to Player.GetAV Agility
 set OldStr to Str
 set Str to Player.GetAV Strength
 set OldEnd to End
 set End to Player.GetAV Endurance

 if (CurWeapon != OldWeapon) || (Agi != OldAgi) || (Spd != OldSpd) || (Str != OldStr) || (End != OldEnd) || (Blade != OldBlade) || (Blunt != OldBlunt) || (Marksman != OldMarksman)
  set BaseWeapon to Player.GetEquippedObject 16
  set WeaponType to GetWeaponType BaseWeapon
  set WeaponWeight to GetWeight BaseWeapon
  set WeightCheck to Floor WeaponWeight
  set WeightCheck to WeaponWeight - WeightCheck
  set WeightCheck to WeightCheck * 10000
  if WeightCheck < 1 && WeightCheck > 0 ;Rounding Errors
   set WeightCheck to 1
  endif
  if WeightCheck > 1 && WeightCheck < 2 ;Rounding Errors
   set WeightCheck to 1
  endif
  set WeightCheck to Ceil WeightCheck

  if WeightCheck == 1 || WeightCheck == 11
   ;Message "DEBUG: This weapon has been modded already" 1
   set bDoMod2 to 1
  endif

  if (WeightCheck >= 12)
   ;Message "DEBUG: Special Weapon cannot mod speed."
  elseif AnimType == 0
   ;Message "DEBUG: Hand to Hand. Cannot mod speed."
  else
   ;Message "DEBUG: Old value doesnt match modding speed." 1
   if bDoMod2 == 0
	set bDoMod to 1
   endif
  endif
 endif

 if bDoMod2 == 1
  set CurWeapon to Player.GetEquippedObject 16
  set CurSpeed to GetWeaponSpeed CurWeapon
  set WeaponType to GetWeaponType CurWeapon

  PrintToConsole "CurSpeed: %.2f" CurSpeed
  if (WeaponType == 0) ;Tranchantes à 1 main
   set SpeedMod to (0.2 + (Agi/100) + (Str/200) + (spd/150) + (End/200) + (0.01*Blade))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
  elseif (WeaponType == 2) ;Contandantes à 1 main
   set SpeedMod to (0.2 + (Agi/200) + (Str/150) + (spd/100) + (End/200) + (0.01*Blunt))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
									elseif (WeaponType == 1) ;Tranchantes à 2 mains
   set SpeedMod to (0.2 + (Agi/125) + (Str/125) + (spd/200) + (End/200) + (0.01*Blade))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
									elseif (WeaponType == 3) ;Contandantes à 2 mains
   set SpeedMod to (0.2 + (Agi/200) + (Str/125) + (spd/200) + (End/125) + (0.01*Blunt))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
							   	elseif (WeaponType == 4) ;Arcs, Arbalètes
				 	set SpeedMod to (0.2 + (Agi/125) + (Str/200) + (spd/125) + (End/200) + (0.01*Marksman))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
  endif
  if SpeedMod < 0.1
   set SpeedMod to 0.1

  endif
  Player.SetWeaponSpeed SpeedMod CurWeapon
  set CurSpeed to GetWeaponSpeed CurWeapon
  PrintToConsole "NewSpeed: %.2f" CurSpeed
  set bDoMod2 to 0
 endif

 if bDoMod == 1
  set CurHp to Player.GetEquippedCurrentHealth 16
  set CurCharge to Player.GetEquippedCurrentCharge 16
  set BaseWeapon to Player.GetEquippedObject 16
  set CurDmg to GetAttackDamage BaseWeapon
  set MaxHp to GetObjectHealth BaseWeapon
  set HpRatio to CurHp / MaxHp
  PrintToConsole "WeaponWeight: %.4f" WeaponWeight
  set CurWeapon to CloneForm BaseWeapon
  set CurSpeed to GetWeaponSpeed CurWeapon
  set WeaponType to GetWeaponType CurWeapon

  Message " "
  Message " "
  Message " "
  Player.RemoveItem BaseWeapon 1
  Player.AddItem CurWeapon 1
  Player.EquipItem CurWeapon

  PrintToConsole "Hp: %.0f/%.0f %.2f" CurHp MaxHp HpRatio
  PrintToConsole "CurSpeed: %.2f" CurSpeed
  PrintToConsole "WeaponType: %.0f" WeaponType
  PrintToConsole "WeaponWeight: %.0f" WeaponWeight
  if (WeaponType == 0) ;Tranchantes à 1 main
   set SpeedMod to (0.2 + (Agi/100) + (Str/200) + (spd/150) + (End/200) + (0.01*Blade))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
  elseif (WeaponType == 2) ;Contandantes à 1 main
   set SpeedMod to (0.2 + (Agi/200) + (Str/150) + (spd/100) + (End/200) + (0.01*Blunt))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
									elseif (WeaponType == 1) ;Tranchantes à 2 mains
   set SpeedMod to (0.2 + (Agi/125) + (Str/125) + (spd/200) + (End/200) + (0.01*Blade))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
									elseif (WeaponType == 3) ;Contandantes à 2 mains
   set SpeedMod to (0.2 + (Agi/200) + (Str/125) + (spd/200) + (End/125) + (0.01*Blunt))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
									elseif (WeaponType == 4) ;Arcs, Arbalètes
				 	set SpeedMod to (0.2 + (Agi/125) + (Str/200) + (spd/125) + (End/200) + (0.01*Marksman))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
  endif
  if SpeedMod < 0.1
   set SpeedMod to 0.1

  endif
  set WeaponWeight to GetWeight BaseWeapon
  set WeaponWeight to WeaponWeight + 0.0001
  SetWeight WeaponWeight CurWeapon
  set WeaponWeight to GetWeight CurWeapon
  SetAttackDamage CurDmg CurWeapon
  PrintToConsole "WeaponWeight: %.4f" WeaponWeight
  Player.SetWeaponSpeed SpeedMod CurWeapon
  Player.SetEquippedCurrentHealth CurHp 16
  Player.SetEquippedCurrentCharge CurCharge 16
 
  set CurSpeed to GetWeaponSpeed CurWeapon
  PrintToConsole "NewSpeed: %.2f" CurSpeed
  set bDoMod to 0
 endif
end


le 2eme:
scn ANBDWSMiscTokenSct

ref Me

short bDoOnce
short bDoUpdate
short bDoMod
short CurHp
short MaxHp
short HpRatio
short CurCharge
float CurSpeed
short WeaponType
float WeaponWeight
float WeightCheck
float SpeedMod
short Marksman
short OldMarksman
short Blade
short OldBlade
short Blunt
short OldBlunt
short Agi
short Spd
short Str
short End
short OldAgi
short OldSpd
short OldStr
short OldEnd
short AnimType

float Timer

ref BaseWeapon
ref OldWeapon
ref CurWeapon

begin OnAdd
 set Me to GetContainer
 ;Message "OnAdd Called." 1
end

begin GameMode
 if Me.IsActor == 0 || Me.GetIsReference Player == 1
  ;Message "Me doesn't exist." 1
  Return
 endif

 if Me.GetDead == 1
  ;Message "Me.GetDead Returning"
  Return
 endif

 set AnimType to Me.GetWeaponAnimType
 set OldWeapon to CurWeapon
			   	set OldBlade to Blade
			   	set Blade to Me.GetAV Blade
			   	set OldBlunt to Blunt
			   	set Blunt to Me.GetAV Blunt
			   	set OldMarksman to Marksman
			   	set Marksman to Me.GetAV Marksman
 set OldSpd to Spd
 set Spd to Me.GetAV Speed
 set OldAgi to Agi
 set Agi to Me.GetAV Agility
 set OldStr to Str
 set Str to Me.GetAV Strength
 set OldEnd to End
 set End to Me.GetAV Endurance

 set Timer to Timer + GetSecondsPassed
 if Timer > 1
  if Me.GetItemCount "ANBDWSMisc001" > 1
   RemoveMe
  endif
  set CurWeapon to Me.GetEquippedObject 16
  set Timer to 0
  if OldWeapon != CurWeapon
   ;Message "NPC: Timer > 2 CurWeapon != OldWeapon" 1
   set bDoUpdate to 1
  endif
 endif

 if bDoUpdate == 1
  set BaseWeapon to Me.GetEquippedObject 16
  set WeaponType to GetWeaponType BaseWeapon
  set WeaponWeight to GetWeight BaseWeapon
  set WeightCheck to Floor WeaponWeight
  set WeightCheck to WeaponWeight - WeightCheck
  set WeightCheck to WeightCheck * 10000
  set WeightCheck to Ceil WeightCheck
  set bDoUpdate to 0
  if (WeightCheck >= 12)
   ;PrintToConsole "NPC: Special Weapon cannot mod speed."
  elseif AnimType == 0
   ;PrintToConsole "NPC: Hand to Hand. Cannot mod speed."
  else
   ;PrintToConsole "NPC: Old value doesnt match modding speed."
   set bDoMod to 1
  endif
 endif

 if bDoMod == 1
  ;PrintToConsole "bDoMod1 Entered."
  set CurHp to Me.GetEquippedCurrentHealth 16
  set CurCharge to Me.GetEquippedCurrentCharge 16
  set BaseWeapon to Me.GetEquippedObject 16
  set MaxHp to GetObjectHealth BaseWeapon
  set HpRatio to CurHp / MaxHp
  set CurWeapon to CloneForm BaseWeapon
  set CurSpeed to GetWeaponSpeed CurWeapon
  set WeaponType to GetWeaponType CurWeapon
  set WeaponWeight to GetWeight CurWeapon

  ;PrintToConsole "Reached Item remove/add/equip."
  Me.RemoveItem BaseWeapon 1
  Me.AddItem CurWeapon 1
  Me.EquipItem CurWeapon

  ;PrintToConsole "Reached PrintToConsole."
  ;PrintToConsole "NPC: %.8f" Me
  ;PrintToConsole "NPCHp: %.0f/%.0f %.2f" CurHp MaxHp HpRatio
  ;PrintToConsole "NPCCurSpeed: %.2f" CurSpeed
  ;PrintToConsole "NPCWeaponType: %.0f" WeaponType
  ;PrintToConsole "NPCWeaponWeight: %.0f" WeaponWeight
								  	if (WeaponType == 0) ;Tranchantes à 1 main
				 	set SpeedMod to (0.2 + (Agi/100) + (Str/200) + (spd/150) + (End/200) + (0.01*Blade))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
  elseif (WeaponType == 2) ;Contandantes à 1 main
   set SpeedMod to (0.2 + (Agi/200) + (Str/150) + (spd/100) + (End/200) + (0.01*Blunt))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
								 	elseif (WeaponType == 1) ;Tranchantes à 2 mains
   set SpeedMod to (0.2 + (Agi/125) + (Str/125) + (spd/200) + (End/200) + (0.01*Blade))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
								 	elseif (WeaponType == 3) ;Contandantes à 2 mains
   set SpeedMod to (0.2 + (Agi/200) + (Str/125) + (spd/200) + (End/125) + (0.01*Blunt))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
									elseif (WeaponType == 4) ;Arcs, Arbalètes
				 	set SpeedMod to (0.2 + (Agi/125) + (Str/200) + (spd/125) + (End/200) + (0.01*Marksman))
   set WeaponWeight to WeaponWeight / 50
   set SpeedMod to SpeedMod - WeaponWeight
   ;PrintToConsole "NPC: Agi: %.0f Spd: %.0f End: %.0f Str: %.0f WeaponWeight: %.4f SpeedMod: %.2f" Agi Spd WeaponWeight SpeedMod
  endif
  if SpeedMod < 0.1
   set SpeedMod to 0.1

  endif
  Me.SetWeaponSpeed SpeedMod CurWeapon
  Me.SetEquippedCurrentHealth CurHp 16
  Me.SetEquippedCurrentCharge CurCharge 16
  set CurSpeed to GetWeaponSpeed CurWeapon
  ;PrintToConsole "NPCNewSpeed: %.2f" CurSpeed
  set bDoMod to 0
 endif
end

Audaces Fortuna Juvat...

#9 beeratwork

beeratwork

Posté 17 juin 2010 - 07:24

Bon, j'ai juste jeté un oeil commé ça, et ce que je me demande, c'est pourquoi il n'y a pas un if pour chaque type d'arme ? Si on veut éviter de modifier la vitesse d'un arc, pourquoi ne pas vérifier directement après "GetEquippedObject 16" le type de l'arme et mettre un return si c'est un arc avant de checker les stat et de faire des modifs ?

En gros :
- vérifier si OBSE
- enregistrer la touche d'accélération (si j'ai bien compris, et proposer un livre qui explique comment en faire un bouton souri n°6 par exemple)
- vérifier si l'arme a changé ou non
- vérifier tous les types d'arme
- ignorer les armes qu'on veut ignorer (placer un "return" dans le if)
- checker les stats
- faire les calculs




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)