Alors, j'ai beaucoup cherché, et je bloque déjà sur mon premier objet...
En fait il s'agit de l'étagère de déco. Je veux la mettre en container, mieux à mon goût, car ça fait une déco et on range ses livres dans une bibliothèque non ?
Bon là où je bloque c'est que pour déplacer une bibliothèque avec havok c'est... comment dire...intriguant. Donc j'ai voulu réutiliser la technique du marteau. Là je m'inspire d'un objet présent dans le mod original, un bureau. Il se place avec le marteau (car assez gros), et c'est un container, pareil que ce que je veux faire. Donc pour cet objet, il y a en fait 3 objets : deux miscitems : l'objet sous forme de marteau, et l'objet sous sa forme réelle (pour peaufiner le placement après l'étape du marteau). L'autre objet est le container.
ID objet sous forme marteau : AM7MDeskExec01
ID miscitem sous forme réelle : AM7HDeskExec01m
ID container : AM7SDeskExec01
CODE : Moddeurs expérimentés, aidez-moi !
► Afficher le texte
Le script de l'objet sous forme marteau est : (je prévient il y a
plein de placeatme, mais je pense qu'il y a pas d'autres moyens pour faire un truc aussi génial)
Code : Tout sélectionner
scn AM7MDeskExec01Script
float PosTemplateX
float PosTemplateY
float PosTemplateZ
float AngleTemplateX
float AngleTemplateY
float AngleTemplateZ
float PosGenZ
float AngGenZ
begin OnActivate
;Getting loca datas of the pickaxe
Set PosTemplateX to GetPos X
Set PosTemplateY to GetPos Y
Set PosTemplateZ to GetPos Z
Set AngleTemplateX to GetAngle X
Set AngleTemplateY to GetAngle Y
Set AngleTemplateZ to GetAngle Z
;Setting Position and Angles of the generating template
Set PosGenZ to PosTemplateZ + 32.0
SetPos Z, PosGenZ
if (AngleTemplateX < 0.0)
Set AngGenZ to AngleTemplateY + 90
SetAngle Z,AngGenZ
elseif (AngleTemplateX > 0.0)
Set AngGenZ to 270 - AngleTemplateY
SetAngle Z, AngGenZ
endif
SetAngle X, 0
SetAngle Y, 0
PlaceAtMe AM7HDeskExec01m 1 0 0
SetDestroyed 1
Disable
end
Begin GameMode
If GetDisabled
MoveToMarker AM7Trash
Endif
End
Le miscitem (qui se déplace) sous forme réelle (bureau) et le container ont le même script :
Code : Tout sélectionner
scn AM7HDeskExec01Script
short MessageStatus
short MessageAnswer
Short ItemLock
Float ItemPos
Ref ItemRef
begin OnActivate
if (IsActionRef Player == 1)
If (GetIsID AM7SDeskExec01 == 1)
Set ItemLock to 1
endif
If (ItemLock == 1 )
MessageBox "Que voulez-vous faire ?" "Ouvrir" "Prendre" "Déverrouiller" "Rien"
set MessageStatus to 1
else
MessageBox "Que voulez-vous faire ?" " " "Prendre" "Verrouiller" "Rien"
set MessageStatus to 1
endif
else
Activate
endif
end
begin GameMode
If GetDisabled
MoveToMarker AM7Trash
Endif
if ( MessageStatus == 0 )
Return
elseif ( MessageStatus == 1 )
set MessageAnswer to GetButtonPressed
if ( MessageAnswer == -1 )
Return
elseif ( MessageAnswer == 0 )
if (ItemLock == 1)
Activate
endif
Return
elseif ( MessageAnswer == 1 )
RemoveAllItems Player, 1
Message "Le contenu a été transféré dans votre inventaire", 5
Player.AddItem AM7MDeskExec01 1
SetDestroyed 1
Disable
Return
elseif (MessageAnswer == 2 )
if (ItemLock == 1)
RemoveAllItems Player, 1
Message "Le contenu a été transféré dans votre inventaire", 5
PlaceAtMe AM7HDeskExec01m 1 0 0
Set ItemLock to 0
disable
else
RemoveAllItems Player, 1
Message "Le contenu a été transféré dans votre inventaire", 5
PlaceAtMe AM7SDeskExec01 1 0 0
Set ItemLock to 1
disable
endif
Return
elseif ( MessageAnswer == 3 )
Return
endif
endif
end
Donc moi, tout gentil tout plein, je crée mes 3 objets sous les mêmes formes que l'auteur du mod original, et je transforme les scripts pour que cela s'applique à mes objets :
ID objet sous forme marteau : AM7ExtEtagereDecoLivres1
ID miscitem sous forme réelle : AM7ExtEtagereDecoLivres2
ID container : AM7ExtEtagereDecoLivres
► Afficher le texte
Script de mon objet sous forme marteau :
Code : Tout sélectionner
scn AM7ExtEtagereDecoLivres1
float PosTemplateX
float PosTemplateY
float PosTemplateZ
float AngleTemplateX
float AngleTemplateY
float AngleTemplateZ
float PosGenZ
float AngGenZ
begin OnActivate
;Getting loca datas of the pickaxe
Set PosTemplateX to GetPos X
Set PosTemplateY to GetPos Y
Set PosTemplateZ to GetPos Z
Set AngleTemplateX to GetAngle X
Set AngleTemplateY to GetAngle Y
Set AngleTemplateZ to GetAngle Z
;Setting Position and Angles of the generating template
Set PosGenZ to PosTemplateZ + 32.0
SetPos Z, PosGenZ
if (AngleTemplateX < 0.0)
Set AngGenZ to AngleTemplateY + 90
SetAngle Z,AngGenZ
elseif (AngleTemplateX > 0.0)
Set AngGenZ to 270 - AngleTemplateY
SetAngle Z, AngGenZ
endif
SetAngle X, 0
SetAngle Y, 0
PlaceAtMe AM7ExtEtagereDecoLivres2 1 0 0
SetDestroyed 1
Disable
end
Begin GameMode
If GetDisabled
MoveToMarker AM7Trash
Endif
End
Script du miscitem sous forme réelle et du container :
Code : Tout sélectionner
scn AM7ExtEtagereDecoLivres2
short MessageStatus
short MessageAnswer
Short ItemLock
Float ItemPos
Ref ItemRef
begin OnActivate
if (IsActionRef Player == 1)
If (GetIsID AM7ExtEtagereDecoLivres == 1)
Set ItemLock to 1
endif
If (ItemLock == 1 )
MessageBox "Que voulez-vous faire ?" "Ouvrir" "Prendre" "Déverrouiller" "Rien"
set MessageStatus to 1
else
MessageBox "Que voulez-vous faire ?" " " "Prendre" "Verrouiller" "Rien"
set MessageStatus to 1
endif
else
Activate
endif
end
begin GameMode
If GetDisabled
MoveToMarker AM7Trash
Endif
if ( MessageStatus == 0 )
Return
elseif ( MessageStatus == 1 )
set MessageAnswer to GetButtonPressed
if ( MessageAnswer == -1 )
Return
elseif ( MessageAnswer == 0 )
if (ItemLock == 1)
Activate
endif
Return
elseif ( MessageAnswer == 1 )
RemoveAllItems Player, 1
Message "Le contenu a été transféré dans votre inventaire", 5
Player.AddItem AM7ExtEtagereDecoLivres1 1
SetDestroyed 1
Disable
Return
elseif (MessageAnswer == 2 )
if (ItemLock == 1)
RemoveAllItems Player, 1
Message "Le contenu a été transféré dans votre inventaire", 5
PlaceAtMe AM7ExtEtagereDecoLivres2 1 0 0
Set ItemLock to 0
disable
else
RemoveAllItems Player, 1
Message "Le contenu a été transféré dans votre inventaire", 5
PlaceAtMe AM7ExtEtagereDecoLivres 1 0 0
Set ItemLock to 1
disable
endif
Return
elseif ( MessageAnswer == 3 )
Return
endif
endif
end
Mais voilà, je pense avoir tout fait comme il faut, mais quand j'active le marteau, au lieu de l'apparition du miscitem, qu'est-ce qu'il se passe ? Bah je prends le marteau dans l'inventaire...
Après je teste en prenant dans mon inventaire le miscitem sous forme réelle : je l'ai ramassé, mais quand je l'ai lâché, il était pile sur moi (d'où un bug, mais c'est normal il est censé apparaitre ailleurs, sur un marteau par exemple).
Et le container, je l'ai testé, c'est un container normal qui marche bien et tout et tout, mais le script ne s'applique pas on dirait : quand je l'active, il n'y a pas de messagebox, mais l'ouverture du "coffre"...
Voilà j'ai du faire un erreur quelque part, mais je ne vois pas où...
Help me please !
Je vais me coucher

, je deviens fou ...
