Aller au contenu

Créer un villageois npc, qui parle + dialogue change avec l'avancée de la quête


Messages recommandés

Posté(e)

Bonjour à tous, voilà je débute donc j'ai un peu du mal avec certaines fonctionnalités mais ici je suis vraiment bloqué donc je vous demande de l'aide, j'espère que vous saurez :D

 

J'aimerai faire un villageois qui parle, lorsque l'on clic gauche dessus , mais que le dialogue change.

Je m'explique, ce villageois servira à indiquer au joueur sa progression dans une quête et voici ce que j'aimerai faire :

- Quand on arrive il nous dit bienvenue, on parle avec lui, il nous donne un objet (une hache, par exemple) pour aller récolter quelque chose et lui donner (par exemple, du bois)

- Une fois qu'on a récolté l'objet et qu'on lui a donné, il nous donne une autre instruction, et ainsi de suite, ...

J'espère avoir été clair et, merci d'avance pour vos réponses :)

Posté(e)

Ah, pardon je me suis mal exprimé, justement non je ne veux pas utiliser citizens car il ne marche pas ^^" et puis je préfère utiliser un villageois que un skin de Steve.. x)

Posté(e)

on right click on villager:
if {progression::%player%} is not set:
	send message "Jaccques » Bonjour à toi"
	wait 0.5 seconds
	send message "%player% » Yo Jacques, Whats up ?"
	wait 1 second
	give player 1 iron axe of efficiency 3
	set {progression::%player%} to 1
else if {progression::%player%} is 1:
	if player's inventory contains 10 logs:
		send message "Jacques » Merci"

 

Tu peux utiliser quelque chose de ce genre

Posté(e)

Merci beaucoup pour ta réponse aussi rapide, malheureusement ça ne va pas, je reçois la hache mais les messages ne s'affichent pas.

Ah, et aussi, du coup ça m' affiche les trades donc ça gêne.

Du coup, j'ai mis on left click, et là il me dit que je dois utiliser le "on damage" event

Posté(e)
on right click on villager:
if {progression::%player%} is not set:
	send "Jacques » Bonjour à toi"
	wait 0.5 seconds
	send "%player% » Yo Jacques, Whats up ?"
	wait 1 second
	give player 1 iron axe of efficiency 3
	set {progression::%player%} to 1
else if {progression::%player%} is 1:
	if player's inventory contains 10 logs:
		send "Jacques » Merci"

 

Tu peux utiliser quelque chose de ce genre

Tu t'es fail, j'ai corrigé le code dans le quote :).

Posté(e)

Merci à tous pour vos réponses cependant, je ne comprends pas, je n'ai aucun message d'erreur mais ça ne fonctionne pas.. et ça ouvre quand même le trade.

(J'ai ajouté le cancel event)

 

EDIT: Aussi, serai il possible de faire ceci avec un nom customisé ?

Le PNJ est créé par shopkeeper (pour pas qu'il bouge) et s'appelle " Mineur ".

Posté(e)
Merci à tous pour vos réponses cependant, je ne comprends pas, je n'ai aucun message d'erreur mais ça ne fonctionne pas.. et ça ouvre quand même le trade.

(J'ai ajouté le cancel event)

 

EDIT: Aussi, serai il possible de faire ceci avec un nom customisé ?

Le PNJ est créé par shopkeeper (pour pas qu'il bouge) et s'appelle " Mineur ".

Oui bien sur :

Le code :

on rightclick on villager:
   cancel event
   if clicked-entity's name is "&aMineur":
       if {progression.%player%} is not set:
           send "&7Mineur &a>> Binvenue à toi mon ptit. Tiou bras m'iont l'air costauds!" to player
           send "&7Mineur &a>> Et si t'voudris bin m'miner &410 stones&a? Je suis triop ocoupé tu vois?" to player
           send "&4Narration &a>> Acceptez-vous la quête? Marquez ""quête acceptée"" dans le chat si vous voulez faire la quête" to player
           set {progression.%player%} to "Mineur : 1"
           stop
       if {progression.%player%} is "Mineur : 2":
           if player's inventory contains 10 stones:
               send "&7Mineur &a>> Merci bin mon ptit aventurier! Tiens, un cadeau pour toi!" to player
               give 1 emerald to the player
               send "&4Narration &a>> Vous venez de recevoir &41 éméraude &a!" to player
           else:
               send "&7Mineur &a>> Revins m'voir quand t'as &410 stones&a !" to player

on chat:
   if {progression.%player%} is "Mineur : 1":
       cancel event
       if message is "quête acceptée":
           set {progression.%player%} to "Mineur : 2"
           send "&7%player% &a>> Je me ferais un plaisir de vous aider &7Mineur&a !" to the sender
           send "&7Mineur &a>> Merci du siervice l'ami! J'te rendrai la pareille un jour tu verras!" to the sender
           stop
       if message is "quête refusée":
           delete {progression.%player%}
           send "&7%player% &a>> Désolé mais je suis trop occupé..." to the sender
           send "&7Mineur &a>> C'pas grave mon ptit! Revin m'voir quand t'as l'temps!" to the sender
           stop
       else:
           send "&4Système &a>> Si vous voulez refuser la quête, marquez ""quête refusée"" dans le chat "
           send "&4Système &a>> Pour accepter la quête, marquez "quête acceptée"" dans le chat "
           send "&4Système &a>> Vérifiez que votre message est en minuscule. "

 

N'hésite pas à remettre les TABS ^^

Posté(e)

Merci beaucoup pour ta réponse, ça m'a beaucoup aidé par contre j'ai juste un problème au tout début :

" Can't compare "click-entity's name" with at texte "&aMineur"

Posté(e)
Merci beaucoup pour ta réponse, ça m'a beaucoup aidé par contre j'ai juste un problème au tout début :

" Can't compare "click-entity's name" with at texte "&aMineur"

Okay, alors remplace la ligne "if clicked-entity's name is "&aMineur": " par "if clicked entity's name contains "&aMineur": "

Posté(e)

Ok, donc maintenant je n'ai plus un seul message d'erreur mais ça ne marche pas, ça continue de m'afficher les trades :/

 

Je relance le serveur et je supprime manuellement la variable car elle existait déjà

Posté(e)
Serai il possible de set ça pour une certaine région ? Car aucune des deux options ne m'arrange ^^

Okay :

on villager trade:
   if player is in the region "RP":
       cancel event

Je ne suis pas sur que ça marche

Posté(e)

c'est le "on villager trade (gui)" qui pose problèmes apparemment

 

EDIT : C'est bon, fallait mettre "on villager gui trade" par contre ça mets que un event de ce type ne peut pas être cancel :/

Posté(e)
c'est le "on villager trade (gui)" qui pose problèmes apparemment

 

EDIT : C'est bon, fallait mettre "on villager gui trade" par contre ça mets que un event de ce type ne peut pas être cancel :/

Ah :/.

Posté(e)

Faudrai que j'aie citizens au pire.. mais pas moyen de trouver le bon.

Aujourdh'ui encore, j'en ai trouvé un, il était en vert dans la liste des plugins (donc il est censé marcher) et quand je fais /npc rien ne se passe.. x)

Posté(e)

ça ne marche toujours pas, ça me mets le même message : un événement de trade de PNJ ne peut pas être cancel

Au pire, ce serai plus pratique d'utiliser le clic gauche

Posté(e)

Bah ouais, faut utiliser Citizens ou, si ton serveur est en 1.8 je pense que ça marche :

execute console command "/summon %player's x location% %player's y location% %player's z location Villager {NoAi:1,Display:{Name:[""§aMineur""]}}"

Je sais pas si ça marche

Posté(e)

on damage:
   victim is a villager
   cancel event
  if damaged entity's name contains "&aMineur":
       if {progression.%attacker%} is not set:
           send "&7Mineur &a>> Binvenue à toi mon ptit. Tiou bras m'iont l'air costauds!" to attacker
           send "&7Mineur &a>> Et si t'voudris bin m'miner &410 stones&a? Je suis triop ocoupé tu vois?" to attacker
           send "&4Narration &a>> Acceptez-vous la quête? Marquez ""oui"" dans le chat si vous voulez faire la quête" to attacker
           set {progression.%attacker%} to "Mineur : 1"
           stop
       if {progression.%attacker%} is "Mineur : 2":
           if attacker's inventory contains 10 stones:
               send "&7Mineur &a>> Merci bin mon ptit aventurier! Tiens, un cadeau pour toi!" to attacker
               give 1 emerald to the attacker
               send "&4Narration &a>> Vous venez de recevoir &41 éméraude &a!" to attacker
           else:
               send "&7Mineur &a>> Revins m'voir quand t'as &410 stones&a !" to attacker

 

J'ai essayé ton script avec "on damage", aucunes erreurs au niveau du script, par contre quand je teste, je ne reçois aucun messages :/

Posté(e)
on damage:
   victim is a villager
   cancel event
  if damaged entity's name contains "&aMineur":
       if {progression.%attacker%} is not set:
           send "&7Mineur &a>> Binvenue à toi mon ptit. Tiou bras m'iont l'air costauds!" to attacker
           send "&7Mineur &a>> Et si t'voudris bin m'miner &410 stones&a? Je suis triop ocoupé tu vois?" to attacker
           send "&4Narration &a>> Acceptez-vous la quête? Marquez ""oui"" dans le chat si vous voulez faire la quête" to attacker
           set {progression.%attacker%} to "Mineur : 1"
           stop
       if {progression.%attacker%} is "Mineur : 2":
           if attacker's inventory contains 10 stones:
               send "&7Mineur &a>> Merci bin mon ptit aventurier! Tiens, un cadeau pour toi!" to attacker
               give 1 emerald to the attacker
               send "&4Narration &a>> Vous venez de recevoir &41 éméraude &a!" to attacker
           else:
               send "&7Mineur &a>> Revins m'voir quand t'as &410 stones&a !" to attacker

 

J'ai essayé ton script avec "on damage", aucunes erreurs au niveau du script, par contre quand je teste, je ne reçois aucun messages :/

Essaie de remplacer la condition "if damaged entity's name contains "&aMineur": " par "if the name of the attacked villager contains "&aMineur": "

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.