[Résolu] Remplir un coffre toutes les 24h du jeu

Le langage des scripts.
Répondre
Avatar du membre
narugatsuto
Traducteur aguerri
Traducteur aguerri
Messages : 1033
Contact :

Remplir un coffre toutes les 24h du jeu

Message 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.
Modifié en dernier par narugatsuto le 27 nov. 2012, 14:19, modifié 5 fois.
Image

Mon Skype :
-Pseudo : narugatsuto
-Nom et prénom :

J'ai un blog de dessin aussi si vous voulez : http://dessins-d-un-geek.blogspot.be/
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: [demande d'aide] script sur coffre

Message 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.
Avatar du membre
narugatsuto
Traducteur aguerri
Traducteur aguerri
Messages : 1033
Contact :

Re: [demande d'aide] script sur coffre

Message 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.
Image

Mon Skype :
-Pseudo : narugatsuto
-Nom et prénom :

J'ai un blog de dessin aussi si vous voulez : http://dessins-d-un-geek.blogspot.be/
Avatar du membre
narugatsuto
Traducteur aguerri
Traducteur aguerri
Messages : 1033
Contact :

Re: [demande d'aide] script sur coffre

Message 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.
Image

Mon Skype :
-Pseudo : narugatsuto
-Nom et prénom :

J'ai un blog de dessin aussi si vous voulez : http://dessins-d-un-geek.blogspot.be/
Avatar du membre
narugatsuto
Traducteur aguerri
Traducteur aguerri
Messages : 1033
Contact :

Re: [demande d'aide] script sur coffre

Message 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.
Image

Mon Skype :
-Pseudo : narugatsuto
-Nom et prénom :

J'ai un blog de dessin aussi si vous voulez : http://dessins-d-un-geek.blogspot.be/
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: [demande d'aide] script sur coffre

Message par Gerauld »

Envoie moi le mod et les détails par MP.
Avatar du membre
narugatsuto
Traducteur aguerri
Traducteur aguerri
Messages : 1033
Contact :

Re: [demande d'aide] script sur coffre

Message par narugatsuto »

Oki, merci Gerauld mais je te passe quoi comme détails ? les editors id ? ou autre ?
Image

Mon Skype :
-Pseudo : narugatsuto
-Nom et prénom :

J'ai un blog de dessin aussi si vous voulez : http://dessins-d-un-geek.blogspot.be/
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: [demande d'aide] script sur coffre

Message par Gerauld »

Quel coffre, ce que tu veux y mettre dedans...
Avatar du membre
narugatsuto
Traducteur aguerri
Traducteur aguerri
Messages : 1033
Contact :

Re: [demande d'aide] script sur coffre

Message par narugatsuto »

Oki, ça je l'ai mis dans le mp que je t'ai déjà envoyer.
Image

Mon Skype :
-Pseudo : narugatsuto
-Nom et prénom :

J'ai un blog de dessin aussi si vous voulez : http://dessins-d-un-geek.blogspot.be/
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: [Demande] Script sur coffre

Message 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.
Répondre

Retourner vers « Entraide sur les scripts »