Page 1 sur 1
Remplir un coffre toutes les 24h du jeu
Posté : 11 sept. 2012, 23:01
par narugatsuto
Bonjour/Bonsoir, je viens poster une demande d'aide car je voudrais faire des coffres qui respawn toute les 24h et donc ça doit passer par du script mais je ne m'y connais rien en script et j'ai essayé le tuto de Gerauld mais j'ai rien compris donc je vous demande de l'aide pour savoir comment faire.
Re: [demande d'aide] script sur coffre
Posté : 18 sept. 2012, 16:12
par Gerauld
Avant tout, tu créés une variable globale (dans miscellaneous => Global) que tu appelles comme tu veux mais dont tu mets la valeur à 1 (très important sinon ça ne marche pas).
Il faut faire une formlist contenant les objets à ajouter toutes les 24 heures.
Tu créés un script attaché à ton coffre en prenant soin d'avoir décoché la case "respawn" de ce coffre.
Tu peux partir d'un truc du genre (avec exemple d'une formlist, d'une arme ou d'un miscobject) :
Code : Tout sélectionner
globalvariable property mavariable auto ;tu remplaces mavariable par le nom de la variable globale que tu a créée
formlist property maliste auto ;la formlist avec des objets
miscobject property unobjet auto ;un miscobject
weapon property monarme auto ;une arme
event oninit()
registerforsingleupdategametime(24)
endevent
event onupdategametiem() ;c'est l'heure
self.RemoveAllItems() ;je vide le coffre
;j'ajoute les éléments de la liste
Int Index = 0
While Index < maliste.GetSize()
self.additem(ListesArmes.GetAt(Index), 1, true)
Index += 1
EndWhile
self.additem(monarme,2,true);j'ajoute 2 exemplaires de mon arme
self.additem(unobjet, 10,true) ;j'ajoute 10 exemplaires de mon objet (un miscobject)
;je relance 24h d'attente si le mod est toujours installé
if mavariable.getvalueint() == 1
registerforsingleupdategametime(24)
endif
endevent
Ne pas oublier de remplir les propriétés en double-cliquant sur le nom du script une fois celui-ci compilé.
Il est possible de renommer les propriétés du script pour qu'elles portent le même nom que l'objet dans le CK. Cela permet de remplir automatiquement les propriétés en cliquant sur auto-fill.
Je n'ai pas testé ce bout de script mais, à vue de nez, il devrait fonctionner.
Il est très important de créer une variable globale à 1 pour la propreté du script et ne pas laisser de traces dans les saves après désactivation du mod.
Re: [demande d'aide] script sur coffre
Posté : 18 sept. 2012, 16:55
par narugatsuto
Merci Gerauld, je test et je te dis quoi mais je ne sais pas le faire tout de suite, dans la soirée oui.
Re: [demande d'aide] script sur coffre
Posté : 29 sept. 2012, 01:37
par narugatsuto
J'ai essayé de faire le script que tu as mis, Gerauld, mais je n'y comprend rien aux scripts et donc j'arrive pas à le faire fonctionner.
Re: [demande d'aide] script sur coffre
Posté : 05 oct. 2012, 15:52
par narugatsuto
Salut, j'ai réessayer mais je n'arrive pas donc je viens demander si quelqu'un peut me faire le script, si quelqu'un veut se charger du script, je lui passe le mod si il a besoin de renseignement dessus, qu'il me le demande.
Je vous remercie d'avance.
Re: [demande d'aide] script sur coffre
Posté : 05 oct. 2012, 16:02
par Gerauld
Envoie moi le mod et les détails par MP.
Re: [demande d'aide] script sur coffre
Posté : 05 oct. 2012, 16:15
par narugatsuto
Oki, merci Gerauld mais je te passe quoi comme détails ? les editors id ? ou autre ?
Re: [demande d'aide] script sur coffre
Posté : 05 oct. 2012, 16:45
par Gerauld
Quel coffre, ce que tu veux y mettre dedans...
Re: [demande d'aide] script sur coffre
Posté : 05 oct. 2012, 16:50
par narugatsuto
Oki, ça je l'ai mis dans le mp que je t'ai déjà envoyer.
Re: [Demande] Script sur coffre
Posté : 27 nov. 2012, 12:48
par Gerauld
Bon, le script ci-dessous a été placé sur les 4 coffres (qui ont chacun une variable globale attachée) :
Code : Tout sélectionner
Scriptname naru_chest extends ObjectReference
Potion[] Property listepotion Auto
Int[] Property nbpotion Auto
MiscObject[] Property listemisc Auto
Int[] Property nbmisc Auto
SoulGem[] Property listesoul Auto
Int[] Property nbsoul auto
GlobalVariable Property cadeauGV Auto
Event OnInit()
If cadeauGV.getvalueint() == 1
RegisterForSingleUpdateGameTime(24)
EndIf
EndEvent
Event OnUpdateGameTime()
Int index = 0
while index < listepotion.length
If Self.GetItemCount(listepotion[index]) < nbpotion[index]
Self.AddItem(listepotion[index], nbpotion[index] - self.getitemcount(listepotion[index]))
EndIf
index += 1
EndWhile
index = 0
while index < listemisc.length
If Self.GetItemCount(listemisc[index]) < nbmisc[index]
Self.AddItem(listemisc[index], nbmisc[index] - self.getitemcount(listemisc[index]))
EndIf
index += 1
EndWhile
index = 0
while index < listesoul.length
If Self.GetItemCount(listesoul[index]) < nbsoul[index]
Self.AddItem(listesoul[index], nbsoul[index] - self.getitemcount(listesoul[index]))
EndIf
index += 1
EndWhile
If cadeauGV.getvalueint() == 1
RegisterForSingleUpdateGameTime(24)
EndIf
EndEvent
Plutôt que des formlists, ce sont des tableaux à remplir en propriété qui sont utilisés. L'avantage des tableaux, c'est que l'on peut jouer directement sur le nombre d'objets à avoir dans le coffre.
Le script regarde dans les tableaux toutes les 24 heures et vérifient à chaque fois le nombre de chaque objet dans le coffre. S'il en manque, il rajoute la différence.
Il y a, dans cet exemple, les 3 types d'objets utilisés par le mod mais cela marchera si on fait des copier-coller et que l'on ajoute des tableaux en plus. Pour chaque type d'objet, on a un tableau avec la liste des objets à avoir dans le coffre et un tableau avec le nombre d'objets à obtenir. Il te suffira de regarder dans l'esp pour voir comment ces tableaux sont remplis.
Pour modifier le nombre d'heures entre deux remplissages de coffre, il suffit de remplacer le 24 par une autre valeur (en heures-temps du jeu) en début et en fin de script.
IMPORTANT : A tester sur une nouvelle partie ou une partie qui n'a jamais eu le mod d'activé. Cela évitera les habituels soucis entre données de scripts des objets sauvegardées et modifications effectuées entre temps...
Je n'ai pas eu le temps de tester cette version. Je préfère te l'envoyer par MP tout de suite vu que je t'ai déjà fait attendre suffisamment longtemps... (jencore désolé de t'avoir zappé...)
Hors-sujet
Autrement, il y a le CK qui couine concernant un soucis de Navmesh quand on ouvre ton esp. Il faudra que tu te penches là-dessus avant de sortir ton mod. Si tu ne trouves pas, il faudra rechercher dans "questions de modding" et éventuellement poster un nouveau sujet.