Aller au contenu


Dépendance Au Skouma


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

#1 Dago_Bert

Dago_Bert

Posté 17 juillet 2010 - 21:06

Bonjour à tous. Je compte créer un mod qui rend le personnage du Joueur dépendant au Skouma une fois qu'il en a pris.
Je n'ai pas de message d'erreur, mais le script ne veut pas se déclencher.

Le voici:

Citation

begin SkoomaDS1

if ( OnPCequip"potion_skooma_01" == 1 )

if ( doonce == 0 )

set doonce to 1

set state to 0

endif

endif

if ( OnPCequip "potion_skooma_01" == 1 )

if ( doonce == 1 )

set state to 0

endif

endif

 

if ( state == 0 )

if ( dayspassed == 1 )

Player->Addspell SkoomaD1

messagebox"J'ai Besoin de Skouma."

set state to 1

endif

endif

 

if ( state == 1 )

if ( dayspassed == 1 )

Player->Removespell SkoomaD1

Player->Addspell SkoomaD2

set state to 2

messagebox "J'ai vraiment besoin de Skouma."

endif

endif

 

if ( state == 2 )

if ( dayspassed == 1 )

Player->Removespell SkoomaD2

Player->Addspell SkoomaD3

set state to 3

messagebox"Je dois trouver du Skouma!"

endif

endif

 

if ( state == 3 )

if ( dayspassed == 1 )

player->Removespell SkoomaD3

Player->Addspell SkoomaD4

set state to 4

messagebox"Je n'en peux plus, il me faut du Skouma."

endif

endif

end




Est-ce qu'il y a quelque chose qui cloche?
Merci d'avance.

Modifié par Dago_Bert, 17 juillet 2010 - 21:09.

http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#2 Nehluxhes

Nehluxhes

    Les mots s'arrêtent à TABRONEH.


Posté 17 juillet 2010 - 21:44

Je sais pas du tout si ça joue mais il manque un espace dans le 1er OnPCequip à la 2ème ligne(ou s'il en faut pas bah c'est dans les autres qu'il y en a un en trop  :) ), et dans la 1ère,3ème et 4ème messagebox

#3 Dago_Bert

Dago_Bert

Posté 17 juillet 2010 - 22:01

J'ai essayé et ça ne change rien. Je suis sûr que le problème vient du Dayspassed, mais je ne sais pas quoi faire.

Modifié par Dago_Bert, 17 juillet 2010 - 22:08.

http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#4 Dallara

Dallara

    Fortificateur fortiche


Posté 17 juillet 2010 - 22:57

Il me semble que tu as oublier de la déclarer au début de ton script.
Et si ton mod ne demande pas Tribunal.esm elle DOIT être déclarée
Personellement j'utiliserai la variable "Day" Déclarée ainsi:

MsfD8 P.120 dit :

Short localdaysPassed ;nbre de jours passés
Short currentDay ;jour courant
if ( currentDay != Day ) ;à chaque fois que Day change (vraisemblablement incrémentée)…
set currentDay to Day ;on place la var à la valeur du jour courant
set localdaysPassed to localdaysPassed + 1 ;ajoute 1 au compteur
endif

Dallara

Modifié par Dallara, 17 juillet 2010 - 23:00.

Heureux qui comme la rivière peu suivre son cours sans quitter son lit.

Le travail c'est la santé, laisse le au malade.

Mieux vaut arriver en retard qu'en corbillard!

VGM

#5 Dago_Bert

Dago_Bert

Posté 17 juillet 2010 - 23:10

Voir le messageDallara, le 17 juillet 2010 - 22:57, dit :

Il me semble que tu as oublier de la déclarer au début de ton script.
Et si ton mod ne demande pas Tribunal.esm elle DOIT être déclarée
Personellement j'utiliserai la variable "Day" Déclarée ainsi:

MsfD8 P.120 dit :

Short localdaysPassed ;nbre de jours passés
Short currentDay ;jour courant
if ( currentDay != Day ) ;à chaque fois que Day change (vraisemblablement incrémentée)…
set currentDay to Day ;on place la var à la valeur du jour courant
set localdaysPassed to localdaysPassed + 1 ;ajoute 1 au compteur
endif

Dallara


Le script ne marche toujours pas :)
http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#6 Nehluxhes

Nehluxhes

    Les mots s'arrêtent à TABRONEH.


Posté 17 juillet 2010 - 23:43

Je fais pas de script mais je fais un peu de prog, donc je peux au moins essayer de t'aider dans la logique, si ce n'est la syntaxe...

On peut voir la version modifiée?
Je sais pas si tu l'a fait mais il faudrait aussi remettre à chaque fois à 0 la variable localdayspassed dans chaque "state" puisque tu vérifies seulement si elle vaut 1 à chaque fois...

Et je comprends pas trop l'intérêt du doonce au début puisque tu ne fais rien de spécial lorsqu'elle était à 0?

#7 Dago_Bert

Dago_Bert

Posté 18 juillet 2010 - 00:02

Voici la version modifiée.
Le doonce c'est pour éviter que le joueur devienne accro au skouma sans en avoir pris.

Citation

begin SkoomaDS1

Short localdaysPassed

Short currentDay

if ( currentDay != Day )

set currentDay to Day

set localdaysPassed to localdaysPassed + 1

endif

 

if ( OnPCequip"potion_skooma_01" == 1 )

if ( doonce == 0 )

set doonce to 1

set state to 0

player->removespell SkoomaD1 SkoomaD2 SkoomaD3 SkoomaD4

endif

endif

if ( OnPCequip "potion_skooma_01" == 1 )

if ( doonce == 1 )

set state to 0

endif

endif

if ( state == 0 )

if ( dayspassed == 1 )

if ( doonce == 1 )

Player->Addspell SkoomaD1

messagebox "J'ai Besoin de Skouma."

set state to 1

endif

endif

endif

 

if ( state == 1 )

if ( dayspassed == 1 )

if ( doonce == 1 )

Player->Removespell SkoomaD1

Player->Addspell SkoomaD2

set state to 2

messagebox "J'ai vraiment besoin de Skouma."

endif

endif

endif

 

if ( state == 2 )

if ( dayspassed == 1 )

if ( doonce == 1 )

Player->Removespell SkoomaD2

Player->Addspell SkoomaD3

set state to 3

messagebox "Je dois trouver du Skouma!"

endif

endif

endif

 

if ( state == 3 )

if ( dayspassed == 1 )

if ( doonce == 1 )

player->Removespell SkoomaD3

Player->Addspell SkoomaD4

set state to 4

messagebox "Je n'en peux plus, il me faut du Skouma."

endif

endif

endif

end



Modifié par Dago_Bert, 18 juillet 2010 - 00:06.

http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#8 Gorialatta

Gorialatta

Posté 18 juillet 2010 - 00:21

Tu ne devrais pas déclarer la local du doonce au début ?

Le Gras Cornu puisse-t-il me bénir de son doigt boudiné et griffu.


#9 Dago_Bert

Dago_Bert

Posté 18 juillet 2010 - 00:45

Voir le messageGorialatta, le 18 juillet 2010 - 00:21, dit :

Tu ne devrais pas déclarer la local du doonce au début ?

Je viens de l'ajouter, mais le script ne marche pas plus.
http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#10 Gorialatta

Gorialatta

Posté 18 juillet 2010 - 00:51

Comment appelle-tu le script en jeu ?

Le Gras Cornu puisse-t-il me bénir de son doigt boudiné et griffu.


#11 Nehluxhes

Nehluxhes

    Les mots s'arrêtent à TABRONEH.


Posté 18 juillet 2010 - 00:51

Mais le if ( OnPCequip"potion_skooma_01" == 1 ) vérifie déjà si il a pris du skooma! Donc je ne vois toujours pas l'intérêt du doonce...Parce que là on vérifie seulement si il est à 0 après un OnPCequip!
Et comme je l'ai dit il faut remettre le localdaysPassed à 0 parce que là il continue à augmenter 2,3,4,5... alors que tu ne vérifies à chaque fois que si il vaut 1...
Et toujours à cause du doonce le player->removespell SkoomaD1 SkoomaD2 SkoomaD3 SkoomaD4 ne sera appliqué que la 1ère fois, plus les autres! Donc même après avoir pris du skooma le joueur aura toujours les effets négatifs!

Je verrai plutôt un truc comme ça(j'indente, c'est plus clair pour moi  :) )


begin SkoomaDS1

Short localdaysPassed

Short currentDay

if ( currentDay != Day )

	set currentDay to Day

	set localdaysPassed to localdaysPassed + 1

endif

 

if ( OnPCequip "potion_skooma_01" == 1 )

	set state to 0

	player->removespell SkoomaD1 SkoomaD2 SkoomaD3 SkoomaD4

endif



if ( state == 0 )

	if ( localdayspassed == 1 )

		Player->Addspell SkoomaD1

		set state to 1

		set localdayspassed to 0

		messagebox "J'ai Besoin de Skouma."

	endif

endif



 

if ( state == 1 )

	if ( localdayspassed == 1 )

		Player->Removespell SkoomaD1

		Player->Addspell SkoomaD2

		set state to 2

		set localdayspassed to 0

		messagebox "J'ai vraiment besoin de Skouma."

	endif

endif



 

if ( state == 2 )

	if ( localdayspassed == 1 )

		Player->Removespell SkoomaD2

		Player->Addspell SkoomaD3

		set state to 3

		set localdayspassed to 0

		messagebox "Je dois trouver du Skouma!"

	endif

endif



 

if ( state == 3 )

	if ( localdayspassed == 1 )

		player->Removespell SkoomaD3

		Player->Addspell SkoomaD4

		set state to 4

		set localdayspassed to 0

		messagebox "Je n'en peux plus, il me faut du Skouma."

	endif

endif

end


EDIT: Changé tous les dayspassed en localdayspassed

Modifié par romaindremora, 18 juillet 2010 - 00:53.


#12 Kira

Kira

    Top-modeleuse...


Posté 18 juillet 2010 - 00:53

Bonjour...Je ne sais pas si tu l'as fait, mais il faut aussi déclarer OnPcEquip en début de script...
C'est une variable, pas une fonction....
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...)

#13 Dago_Bert

Dago_Bert

Posté 18 juillet 2010 - 00:59

Voir le messageromaindremora, le 18 juillet 2010 - 00:51, dit :

Mais le if ( OnPCequip"potion_skooma_01" == 1 ) vérifie déjà si il a pris du skooma! Donc je ne vois toujours pas l'intérêt du doonce...Parce que là on vérifie seulement si il est à 0 après un OnPCequip!
Et comme je l'ai dit il faut remettre le localdaysPassed à 0 parce que là il continue à augmenter 2,3,4,5... alors que tu ne vérifies à chaque fois que si il vaut 1...
Et toujours à cause du doonce le player->removespell SkoomaD1 SkoomaD2 SkoomaD3 SkoomaD4 ne sera appliqué que la 1ère fois, plus les autres! Donc même après avoir pris du skooma le joueur aura toujours les effets négatifs!

Je verrai plutôt un truc comme ça(j'indente, c'est plus clair pour moi  Image IPB )


J'ai essayé ton script, mais ça ne marche pas non plus, même avec la déclaration du OnPCequip au début.
http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#14 Nehluxhes

Nehluxhes

    Les mots s'arrêtent à TABRONEH.


Posté 18 juillet 2010 - 01:02

Je viens de me rendre compte que je n'ai pas mis les P majuscules sur les localdaysPassed(alors qu'il est déclaré avec un), je sais pas si le tesc fais la différence...
Essaie en les mettant?
Et même question que Gorialatta...le script il tourne en boucle si j'ai bien compris c'est ça?

EDIT: et aussi on vérifie tout de suite si localdaysPassed == 1, donc juste après l'avoir déclaré il faut déjà lui donner une valeur...donc 0 ici...pare  que sinon le jeu lui a peut-être donné n'importe quelle valeur et il ne rentrera jamais dans une des boucles if

Modifié par romaindremora, 18 juillet 2010 - 01:09.


#15 Dago_Bert

Dago_Bert

Posté 18 juillet 2010 - 01:07

Voir le messageromaindremora, le 18 juillet 2010 - 01:02, dit :

Je viens de me rendre compte que je n'ai pas mis les P majuscules sur les localdaysPassed(alors qu'il est déclaré avec un), je sais pas si le tesc fais la différence...
Essaie en les mettant?
Et même question que Gorialatta...le script il tourne en boucle si j'ai bien compris c'est ça?

Ça ne change rien. Et oui, le script tourne en boucle. sinon le mod servirait à rien :)
http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#16 Gorialatta

Gorialatta

Posté 18 juillet 2010 - 01:11

Il n'empêche que j'aimerais bien savoir ce qui déclenche ce script. Peut-être que le problème viens de là ? Essaie au moins de le détecter avec une basique messagebox, on sait jamais.

Modifié par Gorialatta, 18 juillet 2010 - 01:12.

Le Gras Cornu puisse-t-il me bénir de son doigt boudiné et griffu.


#17 Nehluxhes

Nehluxhes

    Les mots s'arrêtent à TABRONEH.


Posté 18 juillet 2010 - 01:15

Je sais pas si tu as vu mon edit d'avant.

Mets ça

if ( OnPCequip "potion_skooma_01" == 1 )

	set state to 0

	player->removespell SkoomaD1 SkoomaD2 SkoomaD3 SkoomaD4

	set localdaysPassed to 0

endif

à la place de l'ancienne version de cette partie. (au passage on peut maintenant enlever le localdayspassed to 0 dans le state 4 mais bon pas obligatoire)

#18 Dago_Bert

Dago_Bert

Posté 18 juillet 2010 - 01:18

Le script ne marche toujours pas.
http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#19 Nehluxhes

Nehluxhes

    Les mots s'arrêtent à TABRONEH.


Posté 18 juillet 2010 - 01:43

Bon là j'avoue que je vois pas trop... :)
Sur le wiki il ya un E majuscule sur le OnPCEquip m'enfin je pense pas que ce soit ça.
Je reposte une version avec toutes les modifications pour y voir plus clair, j'enlève les indentations au cas où. Essaie juste de mettre une messagebox après le begin comme l'a dit Gorialatta pour voir si le script tourne au moins...

begin SkoomaDS1

Short localdaysPassed

Short currentDay

Short OnPCEquip

if ( currentDay != Day )

set currentDay to Day

set localdaysPassed to localdaysPassed + 1

endif

 

if ( OnPCEquip "potion_skooma_01" == 1 )

set state to 0

player->removespell SkoomaD1 SkoomaD2 SkoomaD3 SkoomaD4

set localdaysPassed to 0

endif



if ( state == 0 )

if ( localdaysPassed == 1 )

Player->Addspell SkoomaD1

set state to 1

set localdaysPassed to 0

messagebox "J'ai Besoin de Skouma."

endif

endif



 

if ( state == 1 )

if ( localdaysPassed == 1 )

Player->Removespell SkoomaD1

Player->Addspell SkoomaD2

set state to 2

set localdaysPassed to 0

messagebox "J'ai vraiment besoin de Skouma."

endif

endif



 

if ( state == 2 )

if ( localdaysPassed == 1 )

Player->Removespell SkoomaD2

Player->Addspell SkoomaD3

set state to 3

set localdaysPassed to 0

messagebox "Je dois trouver du Skouma!"

endif

endif



 

if ( state == 3 )

if ( localdaysPassed == 1 )

player->Removespell SkoomaD3

Player->Addspell SkoomaD4

set state to 4

messagebox "Je n'en peux plus, il me faut du Skouma."

endif

endif

end


#20 Dago_Bert

Dago_Bert

Posté 18 juillet 2010 - 01:47

Encore une fois, ça ne marche pas :) .

Et il n'y a pas de messagebox qui apparaît.
http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#21 Nehluxhes

Nehluxhes

    Les mots s'arrêtent à TABRONEH.


Posté 18 juillet 2010 - 01:54

Tu en as bien rajouté une? J'en ai pas mis moi.

Donc le script en se lance même pas, il n'y a donc pas (forcément :)) d'erreur dedans, c'est déjà ça ^^
Bon après j'ai dis que je connaissais pas trop les scripts donc je sais pas exactement comment il se lance...vais chercher un peu dans le wiki

#22 Dago_Bert

Dago_Bert

Posté 18 juillet 2010 - 01:56

oui j'en ai ajouté une. Au moins ça explique pourquoi il n'y avait pas de message d'erreur.

EDIT: J'ai également tenté de mettre un startscript au début, rien.

Modifié par Dago_Bert, 18 juillet 2010 - 02:03.

http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#23 Nehluxhes

Nehluxhes

    Les mots s'arrêtent à TABRONEH.


Posté 18 juillet 2010 - 02:12

Le truc c'est que le starscript doit être dans un script dont on est sûr qu'il se lancera d'après ce que j'ai compris....
Je serai pas étonné que les scripts globaux du jeu sont lancés par un objet qu'on est obligé d'activer dans le jeu au début, genre la porte du bureau du recensement...

Essaie de créér un objet qui a un script lié à lui, et dedans mets


begin lancerscript
if ( OnActivate == 1 )
starscript SkoomaDS1
endif
end

et prends le ensuite dans ton inventaire, comme ça ton script devrait au moins se lancer pour qu'on voit au moins si il marche, après faudra trouver uine méthode un peu plus "transparente"

Modifié par romaindremora, 18 juillet 2010 - 02:14.


#24 Dago_Bert

Dago_Bert

Posté 18 juillet 2010 - 02:17

Voir le messageromaindremora, le 18 juillet 2010 - 02:12, dit :

Le truc c'est que le starscript doit être dans un script dont on est sûr qu'il se lancera d'après ce que j'ai compris....
Je serai pas étonné que les scripts globaux du jeu sont lancés par un objet qu'on est obligé d'activer dans le jeu au début, genre la porte du bureau du recensement...

Essaie de créér un objet qui a un script lié à lui, et dedans mets


begin lancerscript
if ( onactivate == 1 )
starscript SkoomaDS1
endif
end

et prends le ensuite dans ton inventaire, comme ça ton script devrait au moins se lancer pour qu'on voit au moins si il marche, après faudra trouver uine méthode un peu plus "transparente"

comme appliquer le 2e script sur la bouteille de skouma?
http://img151.imageshack.us/img151/6506/wiwidoranim.gifWiwi d'or 2010 de l'avatar le plus moche. Nul ne peut battre le lama dans son domaine d'élégance

À la recherche de mods?  http://lorddagobert....traducteurs.fr/

#25 Gorialatta

Gorialatta

Posté 18 juillet 2010 - 02:18

Je ne sais toujours pas comment tu lances ton script mais, peut-être que tu peux le lancer depuis un autre script. Genre les CharGen de début de partie, qui sont chargé de lancer tous les autres scripts. Malheureusement ça nécessiterait une nouvelle partie.

Autre possibilité, implanter dans des dialogues liés à la drogue un StartScript.

Enfin tu peux directement scripter la drogue.

Le script exacte pour la bouteille serait :

begin lancerscript

if ( onactivate == 1 )
starscript SkoomaDS1
activate
endif

end


Sinon tu lances le script, mais tu ne peux plus toucher la bouteille.

Modifié par Gorialatta, 18 juillet 2010 - 02:21.

Le Gras Cornu puisse-t-il me bénir de son doigt boudiné et griffu.





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

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