Begin OnStartCombat / Begin On ?...

Vous trouverez ici les tutoriels et l'entraide sur les outils et techniques de modding spécifiques à Oblivion.
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Re: Begin OnStartCombat / Begin On ?...

Message par Karaiq »

Oui, en effet, je me suis rendu compte de ça hier, sinon le joueur ne s'équipe pas automatiquement. Sauf qu'avec EquipItem, l'ordi plante dés que je suis équipé d'orcrum et que j'entre en combat... Sans l'ordi plante pas, mais le joueur ne s'équipe pas.. j'ai même demandé à Shadaoe de tester pour voir si le problème m'était propre mais non...


Edit :
Voici le script : (juste le bloc correspondant, pour l'instant j'ai viré le bloc avec les phrases, je fais un par un et les phrases j'ai pas tout à fait pigé vos moyens)

Code : Tout sélectionner

Begin GameMode

if player.GetEquipped Orcrum01 == 1

     if player.IsInCombat == 1

player.removeitem Orcrum01 1

     player.additem Orcrum02            ; j'ai essayé sans et avec l'additem et quand on fait sans, l'ordi  plante pas mais on ne resoit pas d'Orcrum02

          player.EquipeItem Orcrum02 1       ; 1 pour que le joueur ne puisse pas retirer Orcrum en combat.
Avatar du membre
Prechan
Confrère
Messages : 4372

Re: Begin OnStartCombat / Begin On ?...

Message par Prechan »

Je n'ai jamais fait de scripts avec EquipItem comme commande. Pourtant ton script semble correct...encore le tesc qui fait des siennes :0
Avatar du membre
beeratwork
Légende de la Confrérie
Légende de la Confrérie
Messages : 1881

Re: Begin OnStartCombat / Begin On ?...

Message par beeratwork »

Ton script est sur orcrum01 ou bien il est externe ? Sii c'est le script de orcrum01, regardes bien, tu vérifie si l'épée est en main pourqu'elle se retire toute seule avant d'ajouter un objet !
C'est délicat à gérer pour le TESC. Le mieux, c'est de faire un additem, suivit de l'equipitem puis d'un removeme
Donc fais ça dans en deux step pour bien découper.
Sinon, dans Sang Noir, par exemple, l'épée niv1 ajoute l'épée niv2 et l'épée niv2 retire toutes les éventuelles épées niv1 (celle qui a évolué + celles que le joueur pourrait avoir eu en trichant)
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Re: Begin OnStartCombat / Begin On ?...

Message par Karaiq »

Hannn, quel boulette de viandelette je fais, c'est vrai que tu as raison beeratwork ! Si on relit mon script, qui est SUR Orcrum01, celui-ci retire orcrum01, qui n'est donc plus sur le joueur, et est censé ajouter après Orcrum02 et l'ajouter ! Bon ben je vais rectifier ça si je peux maintenant !

Edit :

Bon mon CS déconne, donc je mets un exemple de script que je pense mettre :

Code : Tout sélectionner

scn   Orcrum01Script                                     ; Script d'O.01

Begin GameMode

If player.GetEquipped Orcrum01 == 1            ; Si équipé O.01

     If player.IsInCombat == 1                     ; Si Combat

player.additem Orcrum02 1                              ; Ajout d'O.02
 
     player.EquipItem Orcrum02 1                      ; Equip. d'O.02 obligatoire 
 
     Endif

Endif

End


Begin GameMode                                   ; donc ici, normalement, on va retirer tous les Orcrum02 quand le joueur n'est pas en combat, a Orcrum01

If player.IsInCombat == 0                    ; Si joueur pas en combat

     If player.GetEquipped Orcrum01 == 1       ; Si le joueur est équipé d'O.01

player.removeItem Orcrum02 1         ; Virement d'O.02 !

     Endif

Endif

End

Script d'O.02

Code : Tout sélectionner

scn Orcrum02Script

Begin GameMode                          

If player.IsInCOmbat == 0                        ; Si joueur n'est pas en combat

     If player.GetEquipped Orcrum02 == 1            ; Si le joueur est équipé d'O.02

player.additem Orcrum01 1                           ; Ajout d'O.01

     player.EquipItem Orcrum01 0        ; Equip. d'O.01 (là je ne sais pas si il faut mettre '0' parce que je veux que le joueur puisse se déséquiper d'O.01)

     Endif

Endif

End


BEgin GameMode               ; Ici on vire tous les O.01 si joueur en combat et si il est équipé d'O.02

If player.IsIncombat == 1                            ; si joueur en combat

     If player.GetEquipped Orcrum02 == 1     ; si joueur équipé d'O.02

player.removeItem Orcrum01 1                     ; on retire O. 01

     Endif

Endif

End

Et au fait, beeratwork, step, ça veut dire bloc ? (par bloc j'entend Begin -> End)
Avatar du membre
beeratwork
Légende de la Confrérie
Légende de la Confrérie
Messages : 1881

Re: Begin OnStartCombat / Begin On ?...

Message par beeratwork »

Par step j'entend la technique du step by step. Mais c'est inutile dans ce cas.
Tu aurais du dire que tu voulais faire une épée avec une forme de combat et une forme normale !
En combat, le joueur ne peut pas se déséquiper d'Orcrum02. Il faut qu'il ne se batte plus pour revenir à Orcrum01

Le script de la forme normale :

Code : Tout sélectionner

scn Orcrum01Script

; Orcrum01 = forme au repos
; Orcrum02 = forme de combat
short	NbrOld
short	RemoveOldForm
short	LockChangeForm

Begin OnAdd player
; Retirer Orcrum02 si on vient d'en hériter Orcrum01
	if (RemoveOldForm == 0)
		set RemoveOldForm to 1
		player.UnEquipItem Orcrum02 1
		set NbrOld to player.GetItemCount Orcrum02
		player.RemoveItem Orcrum02 NbrOld
		player.EquipItem Orcrum01
	endif
End

Begin GameMode
; Passage à Orcrum02
	if (player.GetEquipped Orcrum01 == 1 && player.IsInCombat == 1 && LockChangeForm == 0)
		set LockChangeForm to 1
     		player.additem Orcrum02 1
	endif
End
Le script de la forme de combat :

Code : Tout sélectionner

scn Orcrum02Script

; Orcrum01 = forme au repos
; Orcrum02 = forme de combat
short	NbrOld
short	RemoveOldForm
short	LockChangeForm

Begin OnAdd player
; Retirer Orcrum01 si on vient d'en hériter Orcrum02
	if (RemoveOldForm == 0)
		set RemoveOldForm to 1
		set NbrOld to player.GetItemCount Orcrum01
		player.RemoveItem Orcrum01 NbrOld
		player.EquipItem Orcrum02 1
	endif
End

Begin GameMode
; Passage à Orcrum01
	if (player.GetEquipped Orcrum02 == 1 && player.IsInCombat == 0 && LockChangeForm == 0)
		set LockChangeForm to 1
     		player.additem Orcrum01 1
	endif
End
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Re: Begin OnStartCombat / Begin On ?...

Message par Karaiq »

Oui, désolé de ne pas avoir précisé le but des scripts et donc d'Orcrum 01 et 02 ! :siffle:

Pour les scripts, merci beaucoup ! Je testerai ça demain soir ! Mon CS déconne trop sur mon ordi, à cause de Windows 7 je pense... Donc je tape les scripts tout propre dans le bloc note.

Edit :

Parfait ton script marche parfaitement beeratwork. Je me lance dans le script des paroles !
Répondre

Retourner vers « Modder Oblivion »