Aller au contenu


Armure "mangeuse" D'or


  • Veuillez vous connecter pour répondre
16 réponses à ce sujet

#1 Iranil

Iranil

Posté 09 décembre 2008 - 18:39

Je viens de m'inscrire au forum car j'ai un "énorme" problème. Je voudrais faire mon premier mod officiel mais je n'arrive pas à faire un script. En gros, le mod serai une quête pour trouver une super armure mais qui aurais un gros inconvénient, toute les secondes, elle te bouffe de l'or si elle est équiper, et, quand tu n'a plus d'or, elle augmente considérablement en poids (style 1000kilos) rendant tout mouvement impossible. Donc toute la quête est préte mais impossible de réussir le script de l'armure :) . S'il vous plait, aidez moi. :P

#2 Kira

Kira

    Top-modeleuse...


Posté 09 décembre 2008 - 19:08

Bonjour, Iranil...

Je ne crois pas qu'il soit possible de modifier le poids d"une armure en cours de jeu, car il est fixé au moment de sa création sur la fiche de l'objet, mais tu peux donner au joueur un sort de fardeau qui aura le même effet....
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#3 Iranil

Iranil

Posté 09 décembre 2008 - 20:43

j'ai essayé avec un StartScript et un while mais lors du lancement de morrowind il me dit qu'il y a une erreur
voici le premier script
begin startscript

short OnPCEquip

if ( OnPCEquip == 1 )

StartScript "armor_feed_gold"

endif

et voici celui qui est activé
begin armor_feed_gold

float timer



if ( timer == 1 )
	while ( player-> "Gold_001" >=1 )
		player->removeitem "Gold_001" 1
	endwhile
endif

if ( player-> "Gold_001" == 0 )
	player-> addspell "gold_fardeau" 1
endif

if ( OnPCEquip == 0 )
	player->removespell "gold_fardeau" 1
endif

end


#4 Antreg

Antreg

Posté 09 décembre 2008 - 20:44

Ce serait pas l'armure magique dans Zelda par hasard? :P
"Moi aussi j'ai l'droit d'faire ma chanson culturelle, d'abord!

#5 Kira

Kira

    Top-modeleuse...


Posté 09 décembre 2008 - 21:29

Me revoilà, Iranil...

Je pense qu'il serait plus judicieux de regrouper les deux scripts, afin d'alléger un peu l'ensemble....

begin armor_feed_gold

float timer
short pgc
short OnPcEquip
short done


if ( menumode ==1 )
	  return
endif

if ( OnPcEquip == 1 )
	set pgc to ( Player->GetItemCount "Gold_001" )
	set timer to ( timer+GetSecondPassed )
	set done to 1
endif

if ( done == 1 )
if ( gpc > 0 )
if (timer == 1 )
Player->Removeitem "Gold_001" 1
set timer to 0
endif
endif
endif

if ( done == 1 )
if ( gpc ==0 )
if timer ==1
player-> addspell "gold_fardeau" 1
   MessageBox "L'armure maudite vient de frapper"
set done to 2
endif

Ce n'est qu'une suggestion, je ne l'ai pas testé, et je ne suis pas une spécialiste des scripts, mais je pense que ça a des chances de marcher....
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#6 Finraïl

Finraïl

    Modèle de wiwilandais nanotechnologique


Posté 09 décembre 2008 - 22:51

Le timer est un float, faire des == ne marchera pas, ou presque pas, il faut tester  avec des >=. :P

Not Quite Dead, le 22.06.2006 à 19:42, dit :

[...]un changement avatarien, même infime, est PAS BIEN et nuisible [...]
Les lisez-moi c'est bon, mangez-en !! Image IPB

Fervent Partisan de l'Immuabilité Avatarienne.

Morrowind Renaissance


#7 Kira

Kira

    Top-modeleuse...


Posté 09 décembre 2008 - 23:12

J'avais bien dit que je n'étais pas une spécialiste des scripts....
Que deviendrait-on sans prince, aussi charmant que bleu, prêt à intervenir?.....
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#8 Kafou

Kafou

    Le canari a bouffé le rominet !


Posté 09 décembre 2008 - 23:23

Au passage voici tes principales erreurs, pour que tu apprennes :

begin startscript

short OnPCEquip

if ( OnPCEquip == 1 )

StartScript "armor_feed_gold"

endif
startscript est déjà un très mauvais nom pour un script puisque c'est aussi une commande de script. D'autre part, OnPCEquip est à 1 tant que tu as l'objet équipé, donc en fait ce que fait ce script c'est en lancer un autre en continu... et donc saturer le système.

begin armor_feed_gold

float timer

if ( timer == 1 )
timer ne sera jamais égal à 1 si tu ne le modifies jamais

	while ( player-> "Gold_001" >=1 )
		player->removeitem "Gold_001" 1
	endwhile
Un while s'exécute tout d'un trait dans la même frame (image) du jeu, si bien que dès que timer sera à 1 (dans ton cas jamais, mais imaginons), le joueur perdra immédiatement tout son or, au lieu d'en perdre peu à peu.
You look like you need a monkey!

Attention : perfectionniste paresseux.

#9 elendell

elendell

    Mécano Dell'Arte


Posté 09 décembre 2008 - 23:58

Mince, grillé ! Je suis vraiment trop lent pour réfléchir et écrire.  :shock:

Bon voici quand même mon avis qui rejoint ce qui a été dit précédemment :

begin startscript [b]; utiliser un nom de fonction pour nommer le script est trop risqué.[/b]

short OnPCEquip

if ( OnPCEquip == 1 )

	StartScript "armor_feed_gold" [b]; sans condition supplémentaire, le startscript sera fait inutilement à chaque frame.[/b]

endif

end [b]; il manquait mais c'est sans doute dans la copie[/b]


begin armor_feed_gold

float timer


if ( timer == 1 )[b] ; il n'y a rien pour faire passer cette variable à 1[/b]
	while ( player-> "Gold_001" >=1 )[b] ; Tant que le PJ a de l'or, reste en boucle (dans la même frame)[/b]
		player->removeitem "Gold_001" 1[b] ; enlève 1 or à chaque boucle[/b]
	endwhile [b]; ce qui revient à enlever tout l'or du PJ en une seule frame.[/b]
endif

if ( player-> "Gold_001" == 0 )[b] ; sans condition supplémentaire, le sort sera redonné inutilement à chaque frame.[/b]
	player-> addspell "gold_fardeau" 1
endif

if ( OnPCEquip == 0 )[b] ; sans condition supplémentaire, le sort sera oté inutilement à chaque frame.[/b]
	player->removespell "gold_fardeau" 1
endif

end


begin armor_feed_gold

float timer
short pgc
short OnPcEquip
short done


if ( menumode ==1 )
	  return
endif

if ( OnPcEquip == 1 )
	set pgc to ( Player->GetItemCount "Gold_001" )
	set timer to ( timer+GetSecondPassed )
	set done to 1
endif

if ( done == 1 )
	if ( gpc > 0 )
		if (timer == 1 )[b] ; On ne peut pas employer l'égalité avec un timer car il y a peu de chance de tomber pile.[/b]
			Player->Removeitem "Gold_001" 1
			set timer to 0
		endif
	endif
endif

if ( done == 1 )[b] ; la condition étant déjà donnée, les 2 blocs peuvent être fondus.[/b]
	if ( gpc ==0 )
		if timer ==1[b] ; il manque les paranthèses.[/b]
			player-> addspell "gold_fardeau" 1[b] ; la quantité n'est pas nécessaire. Le même sort n'est pas cumulable.[/b]
			MessageBox "L'armure maudite vient de frapper"
			set done to 2
		endif

	endif
endif

end

Je n'ai pas testé ce qui suit mais voici ce que ça donnerait en partant du script de Kira :

begin armor_feed_gold

float timer
short pgc
short OnPcEquip
short done


if ( menumode == 1 )
	  return
endif

if ( OnPcEquip == 1 )
	set pgc to ( Player -> GetItemCount, "Gold_001" )
	set timer to ( timer + GetSecondsPassed )
	set done to 1
else
	if ( done == 2 )
		player -> RemoveSpell, "gold_fardeau"
		set done to 0
	endif
endif

if ( done == 1 )
	if ( gpc > 0 )
		if ( timer >= 1 )
			Player -> Removeitem, "Gold_001", 1
			set timer to 0
		endif
	else
		if ( Player -> GetSpellEffects, "gold_fardeau" == 0 )
			Player -> addspell, "gold_fardeau"
			MessageBox "L'armure maudite vient de frapper"
			set done to 2
		endif
	endif
endif

end


#10 Korfandar

Korfandar

    Ch'ti dragon normand...dans son trou


Posté 10 décembre 2008 - 09:44

Une solution alternative au sort de fardeau (qui pourrait être annulé par un sort retirant les effets) est d'avoir deux sets d'armure,un normal et un alourdi. Quand l'effet se déclenche, on force l'échange entre les deux. C'est la méthode que j'utilise pour mes armures énergétiques. Si j'y pense, j'essaierai de ramener mes scripts...

L'abus de SMS est dangereux pour l'élocution mentale

Le mod qui révèle (presque) tout sur les dwemers : Dwarmor

Fervent Partisan de l'Instabilité Avatarienne
Quart du quarteron des VGM...


#11 Havelock

Havelock

    Des fleurs, du rose, un peu de poésie, bordel !


Posté 10 décembre 2008 - 10:04

Voir le messageKorfandar, le 10.12.2008 à 09:43, dit :

sort de fardeau (qui pourrait être annulé par un sort retirant les effets)
Tu penses à une dissipation? En mettant le sort de fardeau en capacité plutôt qu'en sort classique on évite ça, non?
Il se remit à me jauger du regard;quelque chose en moi chercha des mots à revêtir et ne les trouvant pas, s'enfuit nu dans la nuit. Roger Zelazny.
"Je pense que Mirror's Edge sera extra, mais ils me montrent trop de parkour, je veux voir du gameplay au flingue. J'espère qu'il ne faut pas se contenter de courir et de sauter", Cliff Bleszinki

#12 Korfandar

Korfandar

    Ch'ti dragon normand...dans son trou


Posté 10 décembre 2008 - 10:19

Surement oui, je n'ai pas essayé.
L'avantage du remplacement d'armure est qu'on peut modifier d'autres caractéristiques comme la protection qu'elle apporte, l'inconvénient est que ça réinitialise son état d'usure.

L'abus de SMS est dangereux pour l'élocution mentale

Le mod qui révèle (presque) tout sur les dwemers : Dwarmor

Fervent Partisan de l'Instabilité Avatarienne
Quart du quarteron des VGM...


#13 Iranil

Iranil

Posté 10 décembre 2008 - 10:44

Je voudrais remercié elendel pour son cript qui fonctionne parfaitement, j'ai juste quelque petits détails a régler au niveau de la quête mais sinon tout roule

salut, je viens d'avoir une autre idée, c'est peut peut être un peu gros mais il fraudais que l'armure affiche aussi une message box de l'or du jouer (pour pouvoir garder un œil dessus). Mais il me semble qu'on ne peut pas scripter l'inventaire du jouer je me trompe?

#14 Kafou

Kafou

    Le canari a bouffé le rominet !


Posté 10 décembre 2008 - 10:54

Non aucun problème, il suffit de rajouter :
set pgc to ( pgc - 1 )
MessageBox "Votre or : %g" pgc
après :
Player -> Removeitem, "Gold_001", 1
set timer to 0

You look like you need a monkey!

Attention : perfectionniste paresseux.

#15 Iranil

Iranil

Posté 10 décembre 2008 - 11:04

Merci beaucoup kafou. Tout marche comme su des roulettes maintenant.

#16 elendell

elendell

    Mécano Dell'Arte


Posté 10 décembre 2008 - 16:14

Hello !

Voir le messageKorfandar, le 10.12.2008 à 09:43, dit :

Une solution alternative au sort de fardeau (qui pourrait être annulé par un sort retirant les effets) est d'avoir deux sets d'armure,un normal et un alourdi. Quand l'effet se déclenche, on force l'échange entre les deux. C'est la méthode que j'utilise pour mes armures énergétiques.

Le défaut de cette méthode est de ne pas pouvoir changer l'état de dégradation de l'armure pour qu'elles soient identiques.
Les sorts, capacités, etc. quand à eux ont une icône pour indiquer leur présence (ce qui n'est pas toujours souhaité) et leurs effets peuvent être annulés. De plus, si le PJ peut avoir une résistance importante aux sorts (avec un objet par exemple), il peut le contrer au moment où il n'a plus d'or. C'est ce que je faisais pour enfiler les bottes de rapidité . Je pouvais donc les porter sans jamais être atteint de cécité.

Une autre possibilité est de faire un "Player -> AddItem" avec un conteneur. Le conteneur ne se place pas dans l'inventaire mais son poids est quand même donné au PJ. Le poids est enlevé ensuite avec un "Player -> RemoveItem" de la même ID.

Cela peut aussi permettre de faire un poids faible mais qui s'ajoute progressivement toutes les secondes de la même manière que l'or était enlevé toutes les secondes, tant que le PJ en avait.

#17 Iranil

Iranil

Posté 10 décembre 2008 - 17:34

Ou alors on peut faire du sorts une malédiction comme j'ai fait et le problème ne se pause plus car seul une potion de délivrance de la malédiction marcherais pour l'enlever our alors la commande player->removespell "gold_fardeau"

Ou alors on peut faire du sorts une malédiction comme j'ai fait et le problème ne se pause plus car seul une potion de délivrance de la malédiction marcherais pour l'enlever ou la commande player->removespell "gold_fardeau"

Modifié par Iranil, 10 décembre 2008 - 17:34.





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)