yo, j'espère être dans le bonne partie du forum
j'ai créer d'autres anneaux comme celui d'hircine pour se transformer en d'autres créature plus précisément les créatures de la Maison Dagoth (esclave des cendres, zombie des cendres, goule des cendres, dormeurs élevés et vampire des cendres)
je me suis donc inspirer du script de l'anneau d'hircine tout me semble clair sauf ceci:
if ( PCWerewolf == 1 )
set PCWerewolf to -2
Player->BecomeWereWolf
Player->UndoWerewolf
if ( PCWerewolf == -2 )
set PCWerewolf to 1
je vois pas trop ou créer de nouvelle commandes de ce genre pour d'autres créatures.
Aide script basé sur l'anneau d'hircine
- Svartalfar
- Traducteur aguerri | Moddeur en herbe
- Messages : 708
Re: Aide script basé sur l'anneau d'hircine
Salut Miraak, content de voir qu'il existe toujours des moddeurs pour Morrowind ici aussi !
Le mod Great House Dagoth contient des scripts qui pourraient t'intéresser, car on y apprend à dompter notre Peste (et on s'y transforme notamment en créatures du Fléau).
Je te laisse trifouiller dans ce script qui a l'air assez complet niveau transformations possibles, tu devrais donc trouver les commandes qu'il te faut.
C'est balancé un peu brut de décoffrage, désolé, mais je ne vois pas trop quoi dégraisser pour le rendre plus lisible avec toutes ces variables.
'
Le mod Great House Dagoth contient des scripts qui pourraient t'intéresser, car on y apprend à dompter notre Peste (et on s'y transforme notamment en créatures du Fléau).
Je te laisse trifouiller dans ce script qui a l'air assez complet niveau transformations possibles, tu devrais donc trouver les commandes qu'il te faut.
Code : Tout sélectionner
begin sixh_tranformpctoobject
; Note bat uses its own local sine/cosine for faster reactions as it effects player movement
; Transformation is seperated into 3 scripts for absolute speed of the middle one
; This one handles the doonce case at the begining (so the middle doesnt need a doonce check)
short pcfootarmortype
float tempfloat
short needwait ; 0 = normal, 1 = give 2 sec wait, 2 = give 2 sec wait then abort
float waittimer
if ( menumode == 1 )
return
endif
if ( needwait != 0 ) ; give strike sixh_formmaintain time to fully finish once it detected strikemain had finished
set waittimer to ( waittimer + getsecondspassed )
if ( waittimer < 2 ) ; definetly give it enough time. Note since globol thinks we are transformed they will be locked out of casting anymore of my spells during this time
return
endif
endif
if ( needwait == 2 ) ; used so "need cancel transformation" message only gets triggered once per casting as we allow spell time to end
set sixh_playertransformed to 0
set needwait to 0
set waittimer to 0
stopscript sixh_tranformpctoobject
return
endif
set needwait to 0
set waittimer to 0
; DONE WAIT
; if ( sixh_spellduration == 0 ) ; infinet duration transformations require the cancel transformation spell as otherwise you would be stuck forever transformed
; if ( player->getspell sixh_canceltransformation == 0 )
; messagebox "You do not have the CANCEL TRANSFORMATION spell so cannot use unlimited duration transformations"
; set needwait to 2 ; abort this script after spell has had 2 seconds to end itself
; return
; endif
; endif
if ( sixh_playertransformed == 1 ) ; bat
if ( getinterior == 1 )
; prevent bat inside as they can fly through walls
; also cancels in next script if indoors
messagebox "You cannot use bat transformations indoors"
set needwait to 2 ; abort this script after spell has had 2 seconds to end itself
return
endif
endif
if ( scriptrunning sixh_strikemain == 1 ) ; the strikemain will begin autoterminate if it sees we are transforming
set needwait to 1
return ; so start wait AFTER finished strikemain autotermination
endif
player->addspell sixh_nomagic ; as cant disable their magic so i do this
; disableplayermagic ; disable magic wont work as you are already in spell mode
set sixh_pcscale to ( player->getscale )
; following placeatpc lines are also done on cellchange below
set sixh_pcbatnb to ( sixh_pcbatnb + 1 ) ; this will cause old item to commit suicide once its script is able to run again
set sixh_transformnb to ( sixh_transformnb + 1 ) ; The transformation session number. Used for npc disposal (groundnpc and collisionnpc)
; note we do NOT set sixh_pcbattime here as it must only be set in one script
set sixh_spellsecondspassed to 0
set sixh_creatureweapon to 0 ; by default they cannot attack
set sixh_colliding to 0 ; most forms dont even use this so dont want bats collision to muck up mists movement
set sixh_largecreature to 0
set sixh_slowwalkfraction to 0.25 ; walk normally 1/4 that of run. Bears have 0.3
set sixh_watercreature to 0 ; If its a water only creature
set sixh_batright to 0
set sixh_batangle to 0
if ( sixh_playertransformed == 1 ) ; bat
set sixh_formpcscale to 0.01 ; was 0.2 in version 0.95
set sixh_batheight to 30
set sixh_height1stperson to 60
set sixh_batforwardrun to 0
set sixh_batforwardwalk to 0
set sixh_batforwardnomove to 0
set sixh_flightvelocity to 500 ; was 400 in version 0.9
set sixh_minvelocitytrigger to 1 ; was 5 in version 0.95
set sixh_flightzvelocitymult to 120 ; was 6 in version 0.95 ; was 5 in version 0.9
set sixh_objscale to 0.5
; placeatpc sixh_collisionnpc 1 0 0 ; now JAMMED here and in sixh_formmoveflying (where it moves the npc). Reason i jammed it was it kept on bumping you when framerate went low
elseif ( sixh_playertransformed == 2 ) ; mist
set sixh_formpcscale to 0.2
set sixh_batheight to -300
set sixh_height1stperson to 60
set sixh_batforwardrun to 0
set sixh_batforwardwalk to 0
set sixh_batforwardnomove to 0
set sixh_flightvelocity to 130
set sixh_minvelocitytrigger to 5
set sixh_flightzvelocitymult to 3
set sixh_objscale to 3
player->addspell sixh_mistbonusesability
; set sixh_mistclicknumber to 10 ; so the incrementer below makes it start at number 1 (actually it doesnt really matter where it starts)
elseif ( sixh_playertransformed <= 9 ) ; wolf grey,white,red,dgrey,dwhite,dred,dskel
set sixh_formpcscale to 1
set sixh_batheight to 0
if ( sixh_playertransformed <= 5 ) ; normal wolfs
set sixh_batforwardrun to 60
set sixh_batforwardwalk to 10 ; 30 is nice but rotation keeps on jerking into it
set sixh_batforwardnomove to 10 ; nomove includes stationary rotations as dont want them to be so far forward
set sixh_objscale to 1
else ; demon wolfs
set sixh_batforwardrun to 60
set sixh_batforwardwalk to 10
set sixh_batforwardnomove to 10
set sixh_objscale to 1
endif
set sixh_flightvelocity to 500 ; was 100
set sixh_minvelocitytrigger to 20 ; was 30 tried 10
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; wolfs can attack
set sixh_slowwalkfraction to 0.25
if ( sixh_playertransformed == 3 )
player->addspell sixh_wolfgreybonuses
player->additem sixh_weapon_wolf_grey 1
player->equip sixh_weapon_wolf_grey
elseif ( sixh_playertransformed == 4 )
player->addspell sixh_wolfwhitebonuses
player->additem sixh_weapon_wolf_white 1
player->equip sixh_weapon_wolf_white
elseif ( sixh_playertransformed == 5 )
player->addspell sixh_wolfredbonuses
player->additem sixh_weapon_wolf_red 1
player->equip sixh_weapon_wolf_red
elseif ( sixh_playertransformed == 6 )
player->addspell sixh_wolfdgreybonuses
player->additem sixh_weapon_wolf_dgrey 1
player->equip sixh_weapon_wolf_dgrey
elseif ( sixh_playertransformed == 7 )
player->addspell sixh_wolfdwhitebonuses
player->additem sixh_weapon_wolf_dwhite 1
player->equip sixh_weapon_wolf_dwhite
elseif ( sixh_playertransformed == 8 )
player->addspell sixh_wolfdredbonuses
player->additem sixh_weapon_wolf_dred 1
player->equip sixh_weapon_wolf_dred
elseif ( sixh_playertransformed == 9 )
player->addspell sixh_wolfdskelbonuses
player->additem sixh_weapon_wolf_dskel 1
player->equip sixh_weapon_wolf_dskel
endif
endif
if ( sixh_playertransformed == 10 ) ; Alit
set sixh_formpcscale to 1
set sixh_batheight to 0
set sixh_batforwardrun to 80
set sixh_batforwardwalk to 30
set sixh_batforwardnomove to 30
set sixh_flightvelocity to 400
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
set sixh_largecreature to 50
player->addspell sixh_bonuses_alit
player->additem sixh_weapon_alit 1
player->equip sixh_weapon_alit
endif
if ( sixh_playertransformed >= 11 ) ; Bears
if ( sixh_playertransformed <= 13 )
set sixh_formpcscale to 1
set sixh_batheight to 0
set sixh_batforwardrun to 60
set sixh_batforwardwalk to 10
set sixh_batforwardnomove to 10
set sixh_flightvelocity to 400
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
; set sixh_objscale to 1 ; scales done individually
; set sixh_largecreature to 50 ; largecreature done individually
set sixh_slowwalkfraction to 0.3
if ( sixh_playertransformed == 11 ) ; black bear
player->addspell sixh_bonuses_bear_black
player->additem sixh_weapon_bear_black 1
player->equip sixh_weapon_bear_black
set sixh_objscale to 1.5
set sixh_largecreature to 70 ; 70 allows you to attack, Only need 50 if just want them to be able to attack
elseif ( sixh_playertransformed == 12 ) ; brown bear
player->addspell sixh_bonuses_bear_brown
player->additem sixh_weapon_bear_brown 1
player->equip sixh_weapon_bear_brown
set sixh_objscale to 1.6
set sixh_largecreature to 75
elseif ( sixh_playertransformed == 13 ) ; white bear
player->addspell sixh_bonuses_bear_white
player->additem sixh_weapon_bear_white 1
player->equip sixh_weapon_bear_white
set sixh_objscale to 1.7
set sixh_largecreature to 80
endif
endif
endif
if ( sixh_playertransformed == 14 ) ; Boar
set sixh_formpcscale to 1
set sixh_batheight to 0
set sixh_batforwardrun to 60
set sixh_batforwardwalk to 20
set sixh_batforwardnomove to 20
set sixh_flightvelocity to 500
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
player->addspell sixh_bonuses_boar
player->additem sixh_weapon_boar 1
player->equip sixh_weapon_boar
endif
if ( sixh_playertransformed == 15 ) ; Cliff racer
set sixh_formpcscale to 0.3
set sixh_batheight to -250
set sixh_height1stperson to 60
set sixh_batforwardrun to 0
set sixh_batforwardwalk to 100
set sixh_batforwardnomove to 0
set sixh_flightvelocity to 500
set sixh_minvelocitytrigger to 10
set sixh_flightzvelocitymult to 5
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
player->addspell sixh_bonuses_cliffracer
player->additem sixh_weapon_cliffracer 1
player->equip sixh_weapon_cliffracer
endif
if ( sixh_playertransformed >= 16 ) ; Guars
if ( sixh_playertransformed <= 18 )
set sixh_formpcscale to 1
set sixh_batheight to 0 ; tried -50 but its not very succesful
set sixh_batforwardrun to 60 ;
set sixh_batforwardwalk to 30 ; pack overides these forwards
set sixh_batforwardnomove to 30 ;
set sixh_flightvelocity to 400 ;
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
set sixh_largecreature to 110
set sixh_slowwalkfraction to 0.4 ; slightly faster ratio due to feet speed
if ( sixh_playertransformed == 16 ) ; guar normal
player->addspell sixh_bonuses_guar_normal
player->additem sixh_weapon_guar_normal 1
player->equip sixh_weapon_guar_normal
elseif ( sixh_playertransformed == 17 ) ; guar pack
set sixh_batforwardrun to 100
set sixh_batforwardwalk to 100
set sixh_batforwardnomove to 100
set sixh_largecreature to 140 ; needs to be lower down
set sixh_flightvelocity to 350 ; slower but can carry more
player->addspell sixh_bonuses_guar_pack
player->additem sixh_weapon_guar_pack 1
player->equip sixh_weapon_guar_pack
elseif ( sixh_playertransformed == 18 ) ; guar white
player->addspell sixh_bonuses_guar_white
player->additem sixh_weapon_guar_white 1
player->equip sixh_weapon_guar_white
endif
endif
endif
if ( sixh_playertransformed == 19 ) ; kagouti
set sixh_formpcscale to 1
set sixh_batheight to 0
set sixh_batforwardrun to 60
set sixh_batforwardwalk to 10
set sixh_batforwardnomove to 10
set sixh_flightvelocity to 400
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
set sixh_largecreature to 105
player->addspell sixh_bonuses_kagouti
player->additem sixh_weapon_kagouti 1
player->equip sixh_weapon_kagouti
endif
if ( sixh_playertransformed == 20 ) ; kwama forager
set sixh_formpcscale to 0.3
set sixh_batheight to 0
set sixh_batforwardrun to 10
set sixh_batforwardwalk to 10 ; nicer at 10 that 0 so can see it easilier
set sixh_batforwardnomove to 10
set sixh_flightvelocity to 300
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
player->addspell sixh_bonuses_kwama_forager
player->additem sixh_weapon_kwama_forager 1
player->equip sixh_weapon_kwama_forager
endif
if ( sixh_playertransformed == 21 ) ; kwama warrior
set sixh_formpcscale to 1
set sixh_batheight to 0
set sixh_batforwardrun to 10
set sixh_batforwardwalk to 0
set sixh_batforwardnomove to 0
set sixh_flightvelocity to 400
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
set sixh_largecreature to 40
player->addspell sixh_bonuses_kwama_warrior
player->additem sixh_weapon_kwama_warrior 1
player->equip sixh_weapon_kwama_warrior
endif
if ( sixh_playertransformed == 22 ) ; mudcrab
set sixh_formpcscale to 0.3
set sixh_batheight to 0
set sixh_batforwardrun to 10
set sixh_batforwardwalk to 10
set sixh_batforwardnomove to 10
set sixh_flightvelocity to 350
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1 ; so not a large creature and can attack
player->addspell sixh_bonuses_mudcrab
player->additem sixh_weapon_mudcrab 1
player->equip sixh_weapon_mudcrab
endif
if ( sixh_playertransformed == 23 ) ; nixhound
set sixh_formpcscale to 1
set sixh_batheight to 0
set sixh_batforwardrun to 10
set sixh_batforwardwalk to 0
set sixh_batforwardnomove to 0
set sixh_flightvelocity to 500
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
set sixh_largecreature to 50
player->addspell sixh_bonuses_nixhound
player->additem sixh_weapon_nixhound 1
player->equip sixh_weapon_nixhound
endif
if ( sixh_playertransformed == 24 ) ; rat
set sixh_formpcscale to 0.3
set sixh_batheight to 0
set sixh_batforwardrun to 10
set sixh_batforwardwalk to 10
set sixh_batforwardnomove to 10
set sixh_flightvelocity to 350
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
player->addspell sixh_bonuses_rat
player->additem sixh_weapon_rat 1
player->equip sixh_weapon_rat
endif
if ( sixh_playertransformed == 25 ) ; reiklingboar
set sixh_formpcscale to 1
set sixh_batheight to 0
set sixh_batforwardrun to 70
set sixh_batforwardwalk to 20
set sixh_batforwardnomove to 10
set sixh_flightvelocity to 500
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
player->addspell sixh_bonuses_reiklingboar
player->additem sixh_weapon_reiklingboar 1
player->equip sixh_weapon_reiklingboar
endif
if ( sixh_playertransformed == 26 ) ; scamp
set sixh_formpcscale to 0.9
set sixh_batheight to 0
set sixh_batforwardrun to 50
set sixh_batforwardwalk to 20
set sixh_batforwardnomove to 20
set sixh_flightvelocity to 400
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
player->addspell sixh_bonuses_scamp
player->additem sixh_weapon_scamp 1
player->equip sixh_weapon_scamp
endif
if ( sixh_playertransformed == 27 ) ; scrib
set sixh_formpcscale to 0.3
set sixh_batheight to 0
set sixh_batforwardrun to 10
set sixh_batforwardwalk to 10
set sixh_batforwardnomove to 10
set sixh_flightvelocity to 300
set sixh_minvelocitytrigger to 20
set sixh_flightzvelocitymult to 0 ; land based
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
player->addspell sixh_bonuses_scrib
player->additem sixh_weapon_scrib 1
player->equip sixh_weapon_scrib
endif
if ( sixh_playertransformed == 28 ) ; slaughterfish
set sixh_formpcscale to 0.3
set sixh_batheight to 0
set sixh_batforwardrun to 0
set sixh_batforwardwalk to 0
set sixh_batforwardnomove to 0
set sixh_flightvelocity to 500
set sixh_minvelocitytrigger to 5
set sixh_flightzvelocitymult to 0 ; "land" based ie dont use levitate mechanics
set sixh_creatureweapon to 1 ; can attack
set sixh_objscale to 1
set sixh_watercreature to 1 ; water based
player->addspell sixh_bonuses_slaughterfish
player->additem sixh_weapon_slaughterfish 1
player->equip sixh_weapon_slaughterfish
endif
; messagebox "adding item %.0f" sixh_pcbatnb
; Set player scale
set tempfloat to sixh_formpcscale
player->setscale tempfloat ; player scale also set during a loadgame as it gets set to 0.5 if its smaller
; Place the creature
set sixh_info_formplace to 0 ; 0 means from this proc
startscript sixh_formplace
if ( sixh_creatureweapon == 0 )
disableplayerfighting
else
; using short blade for hand to hand increases
; use mod rather than set as will undo the exact same way
set sixh_combatskillincrease to 0
set sixh_combatshortblade to ( player->getshortblade )
set tempfloat to ( player->gethandtohand )
player->setshortblade tempfloat ; use set as mod cant go above 100
set sixh_pcshortbladechange to ( tempfloat - sixh_combatshortblade )
endif
if ( sixh_flightzvelocitymult > 0 ) ; if flying creature
player->modflying 10 ; remain flying once 2 second levitate ends, and at speed 10 (speed is irrelevent as its power assisted flight)
else
; Land based
player->addspell sixh_nospeed ; for smoothing full sizd landbased creatures
; Check if need a ground hugging npc
if ( sixh_batheight <= -1 ) ; negetive height means need a ground hugging npc to detect the position of the ground
player->modflying 10 ; the player hovers above ground hugger
placeatpc sixh_groundnpc 1 0 0
endif
endif
if ( sixh_largecreature != 0 )
placeatpc sixh_hitnpc 1 0 0
endif
; force equip items on player. Not done contineously as it wastes processor time checking
player->additem sixh_invisible_lgauntlet 1
player->equip sixh_invisible_lgauntlet
player->additem sixh_invisible_rgauntlet 1
player->equip sixh_invisible_rgauntlet
player->additem sixh_invisible_robe 1
player->equip sixh_invisible_robe
player->additem sixh_invisible_cuirass 1
player->equip sixh_invisible_cuirass
player->additem sixh_invisible_lpauldron 1
player->equip sixh_invisible_lpauldron
player->additem sixh_invisible_helm 1
player->equip sixh_invisible_helm
player->additem sixh_invisible_greaves 1
player->equip sixh_invisible_greaves
player->additem sixh_invisible_rpauldron 1
player->equip sixh_invisible_rpauldron
player->additem sixh_invisible_shield 1
player->equip sixh_invisible_shield
player->additem sixh_invisible_shirt 1
player->equip sixh_invisible_shirt
player->additem sixh_invisible_pants 1
player->equip sixh_invisible_pants
player->additem sixh_invisible_skirt 1
player->equip sixh_invisible_skirt
; Determine if the player can wear things on his feet
set pcfootarmortype to ( player->getarmortype 5 )
if ( pcfootarmortype != -1 ) ; if is already wearing boots on his feet
set sixh_pcbeastrace to 0
; messagebox "not beast race as wearing something on feet"
else
set sixh_pcbeastrace to 2 ; unknown
if ( Player->GetRace "Argonian" == 1 )
set sixh_pcbeastrace to 1
elseif ( Player->GetRace "Breton" == 1 )
set sixh_pcbeastrace to 0
elseif ( Player->GetRace "Dark Elf" == 1 )
set sixh_pcbeastrace to 0
elseif ( Player->GetRace "High Elf" == 1 )
set sixh_pcbeastrace to 0
elseif ( Player->GetRace "Imperial" == 1 )
set sixh_pcbeastrace to 0
elseif ( Player->GetRace "Khajiit" == 1 )
set sixh_pcbeastrace to 1
elseif ( Player->GetRace "Nord" == 1 )
set sixh_pcbeastrace to 0
elseif ( Player->GetRace "Orc" == 1 )
set sixh_pcbeastrace to 0
elseif ( Player->GetRace "Redguard" == 1 )
set sixh_pcbeastrace to 0
elseif ( Player->GetRace "Wood Elf" == 1 )
set sixh_pcbeastrace to 0
endif
endif
if ( sixh_pcbeastrace == 0 )
player->additem sixh_invisible_boots 1
player->equip sixh_invisible_boots
endif
startscript sixh_tranformpctoobjmaintain
stopscript sixh_tranformpctoobject
end

"Je suis un loriste, le monstre dont on menace les petits moddeurs pas sages au moment du coucher."
Morrowind Opensource
Redécouvrez Morrowind et Tamriel
Dovahkiin, deviens Roy !
Hey ! Si v'z'avez des questions.. !
Morrowind Opensource
Redécouvrez Morrowind et Tamriel
Dovahkiin, deviens Roy !
Hey ! Si v'z'avez des questions.. !