Pleins de compagnons..........

Toutes vos idées pour créer des mods.
Sita
Légende de la Confrérie
Légende de la Confrérie
Messages : 18422

Re: Pleins de compagnons..........

Message par Sita »

Attend un peu qu'il grandisse comme ça on se fait soit un poulet cuit au feu de bois, soit un coq au fin....
Avatar du membre
papill6n
Légende de la Confrérie
Légende de la Confrérie
Messages : 2718

Re: Pleins de compagnons..........

Message par papill6n »

et bien et bien je en connaissais pas cette nouvelle recette => un coq au FIN ??? :mdr: :mdr: XD
"Qu'est ce que cela signifie être 'normal' ?
C'est en sortant de la norme qu'on se construit !"
by Tim Burton
Avatar du membre
ViveLilou18^^
Confrère
Messages : 1298

Re: Pleins de compagnons..........

Message par ViveLilou18^^ »

:mdr:
Le coq au vin c'est bon :langue3:
Image
Sita
Légende de la Confrérie
Légende de la Confrérie
Messages : 18422

Re: Pleins de compagnons..........

Message par Sita »

Bon le tutoriel est terminé, il ne manque plus qu'une petite correction orthographique et que les uploads puissent reprendre.
Avatar du membre
beeratwork
Légende de la Confrérie
Légende de la Confrérie
Messages : 1881

Re: Pleins de compagnons..........

Message par beeratwork »

Ahh ! Tu veux faire grandir des poussins ! J'y avait aussi une fois pensé...

1er technique : S'il est possible de mettre des variables sur des ref classiques.
Tout serait plus facile si on pouvait travailler avec des ref non persistente. Alors autant s'en assurer.
Fait un plugin avec farmerslife, crée une nouvelle ID de poussin, et tape le script suivant dessus :

Code : Tout sélectionner

scn TestGrowUp

short	StartToGrow

Begin GameMode
	if (StartToGrow == 1)
		if (GrowDayNumber < GetDaysPassed)
			set GrowDay to GetDaysPassed
			set Scale to GetScale
			ModScale to (Scale + 1)
		endif
	endif
End
Crée un activateur avec un script comme celui-ci :

Code : Tout sélectionner

scn TestActGrowUp

ref	Chick

Begin OnActivate
	set Chick to PlaceAtMe IDdupoulet 1 1 1 1
	set Chick.StartToGrow to 1
End
Si ça ne va pas, ça veut dire qu'il faudra travailler avec des ref persistente pour transformer le poussin en poulet.
Si ça marche, le poulet doit devenir géant en quelque jours. C'est pour tester après tout !
Sita
Légende de la Confrérie
Légende de la Confrérie
Messages : 18422

Re: Pleins de compagnons..........

Message par Sita »

Bon le tutoriel est disponible à cette adresse:

Création d'un familier

Il faut que je pense à tester si le truc de beer fonctionne !
Avatar du membre
beeratwork
Légende de la Confrérie
Légende de la Confrérie
Messages : 1881

Re: Pleins de compagnons..........

Message par beeratwork »

Non, je crois pas que ça fonctionnera, à l'époque je n'avais pas encore essayé, dans un script A, d'atteindre les variables d'une référence locale à ce script A, sur un objet Z avec un script Z où sont définies ces variables.
Peut-être est-ce possible avec OBSE (qui permettra un jour de faire des structures ?).
L'autre méthode consiste à créer X poussins de tailles différentes, à les scripter et à s'arranger via package/contrôle de collision qu'il soit nourris avec W légumes avant de désactiver et killer le poussin pour placer un autre...

Code : Tout sélectionner

scn ScriptEvolutionPoussin

; Script d'objet
; Script prévu pour ne pas avoir besoin de références persistentes, il est important de killer les créatures qui ne sont plus utilisée

short	step
short	MustEvolve
short	stepHit
short	HitCount
float	timer
ref	Self
ref	NextForm

Begin OnHit player
; Si le joueur frappe la créature on compte les coups.
	if (stepHit == 0)
		set stepHit to 1
	elseif (stepHit >= 2 && stepHit < 5)
		set HitCount to (HitCount + 1)
	endif
End

Begin GameMode
; Si le joueur frappe la créature
	if (stepHit == 1)
	; Si la créature est frappée par le joueur, on compte un laps de temps de 1min et 30s pour ne pas que le joueur frappe trop souvent la créature.
		set stepHit to 2
		set timer to 90
	elseif (stepHit == 2)
	; Décompte du temps tant que le joueur ne frappe pas plus de 3x, sinon, défense.
		if (timer > 0)
			set timer to (timer - GetSecondsPassed)
			if (HitCount < 3)
				SetIgnoreFriendlyHits 1
			else
				set stepHit to 3
				SetIgnoreFriendlyHits 0
				ForceAttack player
		elseif (stepHit < 3)
		; Le temps est écoulé, réinitialisation
			set stepHit to 0
			set HitCount to 0
		endif
	elseif (stepHit == 3)
		set stepHit to 4
		set timer to 45
	elseif (stepHit == 4)
	; La créature se bat pendant 45s contre le joueur et si sa santé diminue en-dessous des 20%, elle arrête le combat et s'éloigne. Si le nombre de coups porté est trop important, elle part pour de bon.
		if (timer > 0)
			set timer to (timer - GetSecondsPassed)
			if (GetAV health <= ((GetBasActorValue health) * 0.2))
				StopCombat player
				ForceTakeCover player 30
			endif
		else
			StopCombat player
			if (HitCount >= 9)
				set stepHit to 5
				SetForceRun 1
			else
				set stepHit to 0
			endif
		endif
	elseif (stepHit == 5)
	; Lorsque la créature est dégoutée et qu'elle a couru assez loin, elle redevient sauvage, donc il faut changer les factions.
		if (GetDistance player >= 768)
			MessageBox "Vous avez perdu Bibi à jamais, maintenant, si vous le recroisez, il vous mangera !"
			set stepHit to 6
			SetForceRun 0
			RemoveScriptPackage
			AddScriptPackage IDPackageSauvage
			EvaluatePackage
			SetFactionRank PlayerFaction -1
			SetFactionRank IDFactionSauvage 1
		endif
	endif

; Si le joueur est en mode discrétion et que la créature l'accompagne
	if (player.IsSneaking == 1 && Button == 1)
		SetForceSneak 1
	else
		SetForceSneak 0
	endif

; Si la créature possède assez de nourriture pour grandir
	if (GetItemCount IDObjetGraine >= 10 && MustEvolve == 0 && IsInCombat == 0 && Button == 2)
		set MustEvolve to 1
	endif

; Si la créature doit évoluer, on la tue et on la désactive avant de faire apparaître le niveau suivant. Si la créature est en combat on attend qu'elle termine.
	if (MustEvolve == 1 && IsInCombat == 0 && stepHit == 0)
		set MustEvolve to 2
		set Self to GetSelf
		Self.Disable
		Self.Kill
		set NextForm to PlaceAtMe ObjetIDFormeSuivante 1 0 0 0
		NextForm.MoveTo Self
		NextForm.RemoveScriptPackage
		NextForm.AddScriptPackage IDPackageSuivreJoueur
		NextForm.EvaluatePackage
	endif
End

Begin OnActivate
; Si la réature ne doit pas évoluer, qu'elle n'a pas encore commencé l'évolution, on peut faire quelques actions lorsqu'on l'active. Ne fonctionne pas si on frappe la créature.
	if (step == 0 && MusEvolve == 0 && stepHit == 0)
		if (IsActionRef player == 1)
			MessageBox "Petit poussin","Attend-moi ici","Suis-moi","Voilà des bonnes graines","Je vai te manger"
			set step to 1
		endif
	elseif (step == 1)
		set Button to GetButtonPressed
		if (Button == 0)
			RemoveScriptPackage
			AddScriptPackage IDpackagePourAttendre
			EvaluatePackage
			set step to 0
		elseif (Button == 1)
			RemoveScriptPackage
			AddScriptPackage IDpackagePourSuivre
			EvaluatePackage
			set step to 0
		elseif (Button == 2)
			RemoveScriptPackage
			AddScriptPackage IDpackagePourChercherApresObjetGraine
			EvaluatePackage
			set step to 0
		elseif (Button == 3)
			RemoveScriptPackage
			AddScriptPackage IDpackagePourFuirJoueur
			EvaluatePackage
			set step to 0
		endif
	endif
End
A tester et a améliorer bien sûr puisque je n'ai pas pu encore tester.
Répondre

Retourner vers « Idées »