WB Chasse au trésor

Users who are viewing this thread

Cernunos

Banned
Comment vous verriez une chasse au trésor en Calradia ? Je suis en train de voir pour ajouter cette possibilité, j'ai quelques options, mais des idées seraient les bienvenues.
 
Oui, peut être. Ou un objet, genre une carte, dans l'inventaire. Obtenue par hasard en lisant un livre, ou par évènement aléatoire. Mais quelle forme pourrait prendre cette chasse au trésor. Une option pour lire la carte, qui donnerait une direction (je dois vérifier la faisabilité), un triangulation par rapport à des villes/villages/châteaux, le tout aléatoire ?
 
ou une énigme qui suppose que vous connaissez bien les endroits uniques de calradia (par exemple le squelette qui se trouve dans un des châteaux, ou la chambre à coucher du roi haurlus à praven ...)
ça me rappelle une autre mod, light&darkness  qui a plein de quêtes bien-foutus qui commencent par des cartes avec des enigmes comme indication... un truc du genre
 
Hello

Cernunos said:
Oui, peut être. Ou un objet, genre une carte, dans l'inventaire. Obtenue par hasard en lisant un livre, ou par évènement aléatoire. Mais quelle forme pourrait prendre cette chasse au trésor. Une option pour lire la carte, qui donnerait une direction (je dois vérifier la faisabilité), un triangulation par rapport à des villes/villages/châteaux, le tout aléatoire ?

Cernunos, amicales salutations.

Pour tout bon RPG, ou simplement pour un jeu avec des quêtes, il est judicieux d'intégrer une "chasse au trésor", c'est amusant car j'ai aussi prévu cela dans mon mod, comme dans l'excellent Skyrim.

Pour moi, ce sera une série de livres ou parchemins à lire qui donneront des indications pour trouver un objet exceptionnel, une armure d'invincibilité pour le moment.
Ces documents seront répartis dans divers lieux, on les récupèrera au hasard d'autres quêtes, pratiquement toutes secondaires, ce qui oblige à faire le maximum de quêtes pour aller au bout de la chasse au trésor.
J'aimerai lier la possibilité de pouvoir lire certains documents à son niveau d'intelligence, et si possible à un niveau minimum d'une nouvelle compétence, par exemple la Culture, mais je n'en suis pas encore là !

Normalement pas de difficultés en passant par un nouveau menu dans le "Menu Camp" pour lire des documents via un script vérifiant la possession de l'item, et dans ton cas la possibilité d'en ajouter un dans l'inventaire après lecture d'un livre, comme une carte qui se détacherait...
Si tu connais une autre façon de faire, je suis preneur !

Par contre, la notion "le tout aléatoire ?" me semble pas facile à mettre en œuvre, enfin pour moi !
Si tu mets au point cette notion, cela m'intéresse au plus haut point !!!  :grin:

Bon courage, et je me rends compte qu'il en faut quant on est tout seul à travailler sur un mod, il y a tant de chose à faire !

Tchin !
:twisted:
 
Reçoit les miennes en retour :smile:

POur le lecture des document, le jeu enregistre le niveau d'intelligence requis au début du jeu dans des slots sur chaque livre, puis retrouve les informations quand tu essaye de lire les livres.
Voilà le passage spécifique en jeu:
  ("camp_action_read_book_start",0,
  "{s1}",
  "none",
  [(assign, ":new_book", "$temp"),
    (str_store_item_name, s2, ":new_book"),
    (try_begin),
      (store_attribute_level, ":int", "trp_player", ca_intelligence),
      (item_get_slot, ":int_req", ":new_book", slot_item_intelligence_requirement),
      (le, ":int_req", ":int"),
      (str_store_string, s1, "@You start reading {s2}. After a few pages,\
you feel you could learn a lot from this book. You decide to keep it close by and read whenever you have the time."),
      (assign, "$g_player_reading_book", ":new_book"),
    (else_try),
      (str_store_string, s1, "@You flip through the pages of {s2}, but you find the text confusing and difficult to follow.\
Try as you might, it soon gives you a headache, and you're forced to give up the attempt."),
    (try_end),],
    [
      ("continue",[],"Continue...",
      [(jump_to_menu, "mnu_camp"),
        ]
      ),
      ]
  ),

Ensuite, un trigger ou simple_trigger permet de calculer l'avancement de la lecture avec le passage du temps.

Pour le coté aléatoire de la chasse au trésor, un moyen pourrait être:
Peut être "cette carte semble indiquer la ville de "XXXX".

Tu t'y rends, tu relis la carte.
A chaque fois, 4 choix, résultat aléatoire, dépendant de plusieurs facteurs (avec mise en mémoire, si le joueur veut y revenir)
"aller vers YYYYYY" qui peut être un village, une autre ville, un chateau (VVC). = la chasse continue
"la carte ne semble plus rien indiquer" = c'était une fausse carte.
"la carte indique une suite, mais vous avez perdu les indices" = ce qui fera faire demi tour au joueur pour retourner soit au dernier VVC, soit au point de départ de la chasse.
"la carte montre un X, vous y etes presque" = le joueur a trouvé le dernier repère, et peut commencer à "chercher" (peut importe, réduire la vitesse, s'arréter régulièrement pour faire le point, et faire apparaître le party, ça, c'est un détail, plein de façons de le faire...)

PLus la chasse est longue, plus le trésor pourrait être important à la fin.
Oui, je vais essayer de mettre ça en place, peut être le coder en OSP (- les systèmes "Rigale"). Ce système t'intéresserait ? Car il est très différent du tien dans l'esprit.
 
Bon, ca s'annonce pas mal. Pour la partie finale, ce sera peut être possible de rajouter un petit "le trésor devrait se trouver a X distance de XXXX, et Y distance de YYYYY", pour rajouter une touche de recherche finale aléatoire. On verra.
 
Hello

Je vois que tu avances sur le sujet !  :grin:

Cernunos said:
Reçoit les miennes en retour :smile:
...
Pour le coté aléatoire de la chasse au trésor, un moyen pourrait être:
Peut être "cette carte semble indiquer la ville de "XXXX".
...
Oui, je vais essayer de mettre ça en place, peut être le coder en OSP (- les systèmes "Rigale"). Ce système t'intéresserait ? Car il est très différent du tien dans l'esprit.

Merci aussi pour tes encouragements, ça fait du bien, car je suis loin de maîtriser aussi bien que toi certaines choses.
Oh que oui, ce système aléatoire m'intéresserait, et je pense que cela intéresserait aussi d'autres moddeurs !

Il est effectivement bien différent du mien dans l'esprit.
Pour ma "chasse au trésor", tout est fixé d'avance, avec un certain nombre d'indices récoltés au hasard d'autres quêtes. Et comme pour le moment je ne sais pas faire autrement, je passe par le système des menus.

L'exemple de script que tu donnes va me servir, en particulier pour faire le lien avec le niveau d'intelligence que l'on a !
Pour la partie lecture d'un livre indice, je ne la fais pas dans le temps, elle est immédiate, car il faut que cela soit aussi valable pour obtenir un indice à partir de tout autre objet qu'un livre.
Pour avoir juste ton avis, voilà ce que j'ai fait, c'est ma base pour obtenir les indices.

Ajout d'un nouveau menu dans le mnu_camp :

      ("action_culture",[],"Study an item.",
      [
        (call_script, "script_culture_gen"),  # Voir si possession, ou non, d'un ou plusieurs objets à étudier
      ]
      ),
...
# Si plusieurs objets
  ("camp_study_yes",0,
  "Items to study:",
  "none",
  [(set_background_mesh, "mesh_pic_culture"),],
    [
    ("camp_study_1",[],"Book 1",
      [
      (jump_to_menu, "mnu_study_t01_book"),
      (display_message, "str_t01_book"),  # pour avoir l'indice dans le journal des messages
      ]
      ),     
    ("camp_study_2",[],"Item XX",
      [
      (jump_to_menu, "mnu_study_t02_item"),
      (display_message, "str_t02_item"),
      ]
      ),     
      ...
    ("camp_study_end",[],"Forget it",
      [(jump_to_menu, "mnu_camp"),]
      ),     
    ]
  ),
...
  ("study_t01_book",0,
    "Texte du livre, indice...",
    "none",
    [],
    [
    ("t01_continue",[],"Continue",
      [(jump_to_menu, "mnu_camp_study_yes"),
      ]
      ),
    ("t01_go_back",[],"Go back Camp",
      [(jump_to_menu, "mnu_camp"),
      ]
      ),
    ]
  ),

Je sais que c'est un peu lourd car il faut multiplier les menus selon que l'on ait plusieurs objets, juste un objet, ou pas d'objet, mais pour le moment avec deux objets ça marche très bien, ça va se compliquer quand je vais en ajouter d'autres !
Je l'améliorerai si je peux, peut-être en introduisant des variables ?

En tout cas, bon courage pour ta "chasse au trésor", et je sens que cela va être super !

Tchin !
:twisted:
 
Le script que je t'ai présenté est un script original du jeu, uniquement la partie qui fait la vérification d'intelligence requise pour autoriser la lecture.
Pour ton système, pas de commentaires, beaucoup de chemins mènent au résultat dans MBW.
Pour mon système, je passe par les quètes. Je ne connais pas trop, j'en ai rajouté dans Rigale, mais des très simples, mais ça offre quand même des avantages, je trouve: un espace dédié dans les notes, la possibilité de les mettre à jour très simplement, la possibilité de mettre en place des slot, etc. De plus, il suffit de lancer la quète, ce qui peut se faire facilement depuis n'importe quoi. Enfin, dernier avantage, mais je dois vérifier, tu peux avoir plusieurs niveaux d'indications du développement de la quète (mais je ne suis pas sur à 100%, je dois vérifier).
Je suis tombé hier sur un os dans la détermination aléatoire des villes étapes, mais je vais régler ça aujourd'hui. Une fois que le système sera en place, j'en ferai un OSP.

Courage à toi, ce que tu annonces a l'air alléchant :smile:
 
Bon, j'ai sorti ce système de chasse au trésor aléatoire.
http://forums.taleworlds.com/index.php/topic,302625.0.html
C'est en test, mais ca devrait pas trop mal fonctionner.
Amusez vous bien :smile:
 
Hello

Bonsoir Cernunos

Dans le gros morceau du module_game_menus :
J'ai un souci avec la ligne  "(troop_slot_eq,"trp_civ_tech_learning",slot_civ_tech_status,3),"
Plus précisément avec le "slot_civ_tech_status" qui donne une erreur lors de la compilation, en gros "non initialisé" !

Doit-on ajouter ce slot dans le module_constants ?

Mes respects.
Tchin !
:twisted:
 
Rah oui crotte, il faut que je l'enlève de l'OSP, c'est une partie "rigalesque", qui en fait est mon système de connaissance. En gros, cette ligne indique que le joueur connaît la technologie "apprentissage"(Learning), qui va régulièrement lui donner des bonus dans divers domaines.
Supprime

(try_begin),
(troop_slot_eq,"trp_civ_tech_learning",slot_civ_tech_status,3),
(val_add,":total_int_bonus",5),
(try_end),
ca n'apporte rien sans le reste du système.
Attention, ca apparaît deux fois dans le game menu.
Bien vu, merci :smile:
 
Hello

Bonjour Cernunos.

Avec la suppression de ces lignes, c'est tout bon pour la compilation !  :grin:

En jeu pour la première chasse au trésor aléatoire :
Je ne sais pas où on se procure la "treasure map", j'imagine que c'est auprès d'un vendeur de bouquins d'une des villes, mais pour gagner du temps j'ai mis la "treasure map" dans mon inventaire, et en avant...

La quête :
Pas de problème, on lit la "treasure map" jusqu'au bout des 100% comme un autre bouquin du jeu, via le menu Camp, et oh miracle, la quête de la recherche du trésor se déclenche... Et les deux menus associés apparaissent dans le menu Camp, ainsi que les informations nécessaires à la recherche du trésor... Nickel...
Pour mon premier essai, cela s'est fait en deux étapes.

Voilà en images ce que donne la fin de la quête, avec les petits bugs à corriger.  :wink:

Messages à l'écran, tout au long de la recherche, il y a deux messages qui se superposent :
between treasure and "lieu A" is "X"  et  You are too far from "lieu A" (You are at the good distance from "lieu A")
treas01.jpg

Messages dans le journal, c'est bon :
treas02.jpg

Fin de la quête, pour l'instant pas possible, voilà ce que cela donne en cliquant sur l'icône du "An X marks the spot", en guise de creuser on a :  :grin:
treas03.jpg

Si tu vois pourquoi, ça ira plus vite, sinon je chercherai.
Je ferai aussi d'autres essais pour tester le côté aléatoire de la longueur de la quête, et les échecs éventuels de la quête.  :grin:

En tout cas, Cernunos, bravo pour ton travail, si si je suis admiratif !  :cool:
J'aimerais bien un jour coder aussi bien que toi !  :grin:

Tchin !
:twisted:

 
Excellent ^^
Il faut lui creuser sous l'armure et lui arracher les poils, c'est ça le trésor ^^.

En fait, l'affectation de la rencontre du "X marks the spot" doit rentrer en conflit avec la propre affectation de certaines rencontres de ton mod.
Ca se passe dans cette ligne de code

        (else_try),
# (party_get_template_id, ":ptype","$g_encountered_party"),
            (eq,":template","pt_rigale_treasure_spot"),
          (jump_to_menu, "mnu_rigale_treasure_spot"),

que tu as sans doute copier au mauvais endroit du script "game_event_party_encounter", si tu l'as fait, car je viens de voir que j'ai écrit "game_event_party_encounterS", sur le site en OSP. Tu n'as peut être pas trouver ce script, d'où le problème. En tout cas, l'erreur vient de là, il faut le copier à cet endroit, dans une liste de else_try, mais qui a déjà défini la variable locale ":template", donc copie le en dessous.
Dans native, je crois que ça ressemble à ça:
(else_try), 
  (party_get_template_id, ":template", "$g_encountered_party"),
  (ge, ":template", "pt_steppe_bandit_lair"),
  (lt, ":template", "pt_bandit_lair_templates_end"),
  (assign, "$loot_screen_shown", 0),
#   (call_script, "script_encounter_init_variables"),
  (jump_to_menu, "mnu_bandit_lair"),
donc copie ma partie de code en dessous, juste au dessus d'un autre else_try. J'espère que je suis clair :sad:
Ce sera compatible avec les sauvegardes précédentes, tu pourras retourner sur le X, et ca devrait te donner le bon résultat (trésor et fin de quète en théorie).
Pour acquérir le bouquin, je n'ai pas fourni de script, je laisse les moddeurs faire comme ils veulent. En achat de bouquin, en loot aléatoire après avoir tuer des bandits ou piller un camp de bandit, en quète rigalesque aléatoire, en récompense par un esprit chamanique vaincu, etc. Je n'ai pas ajouté ces options, un peu trop de taff en ce moment, mais si tu es intéressé et "racle" un peu, fait moi signe. Dans rigale, j'ajouterais aussi une connaissance et une compétence de chasse au trésor, qui augmenteront les chances de continuer à chaque étape (en baissant fortement les chances initiales, qui feront que pour le joueur novice dans cette discipline, la chasse au trésor se soldera souvent par un échec (mais avec quand même la récompense de quelques points d'XP, on est pas des brutes ^^)

Pour la superposition des messages, je prends note, j'essaierai de voir ça après.

Autrement, quand tu auras testé un peu plus en profondeur, tu en penses quoi du système ?
 
Hello

Le romain n'a plus un ploil ! :eek:
Effectivement, le morceau bien placé dans le script donne une fin à la quête, avec sa récompense, je l'avais mis juste un peu trop loin, à la fin.
J'ai vu sur le forum anglais que tu avais signalé qu'il fallait enlevé le S dans "game_event_party_encounter", j'ai pas pensé à te le dire, cela ne m'avait pas gêné, mais c'est mieux pour faire la recherche.  :grin:
treas04.jpg
Juste une petite question, pourquoi le message en rouge, a t-il une utilité ?

Ton système chasse au trésor aléatoire est excellent !
Je ferai d'autres tests, c'est sûr, un excellent moteur de recherche de trésors !
Puisque l'obtention de la "Treasure map" est libre, je vais faire en sorte que pour la première fois cela soit simple, et pour les suivantes un peu plus difficile, il faut surtout pas qu'on puisse la faire trop souvent.

Cernunos, tu es un as !  :wink:

Tchin !
:twisted:
 
Tant mieux tant mieux, merci beaucoup :smile:

Le message en rouge est un message "automatique" lié à (cancel_quest,"qst_rigal_treasure_hunt_1"), qui apparaît parce que le jeu annule la quête (ce qui permet de la refaire dans la foulée).

Voilà, merci pour le feedback, j'attends encore un peu de temps, et je demanderai à Duh de faire passer l'OSP dans les OSP "viables", grâce à tes test, merci. Je t'ai réjouté dans les crédits de Rigale comme beta tester du système de chasse au trésor :smile:

A plus, bon modding :smile:
 
Hello

Cernunos, respectueuses salutations.

Après une douzaine de tests, voilà mes remarques.
Donc, à part les deux messages qui se superposent sur l'écran (Voir plus haut), il y a un autre petit problème d'affichage dans l'écran des quêtes quant on enchaîne deux quêtes, il reste en mémoire trois lignes de la chasse précédente jusqu'à la fin de la chasse courante.
treas05.jpg

Sur tous les tests effectués, le côté aléatoire fonctionne très bien, une seule chasse était un fake, toutes les autres aboutissent en 2 ou trois étapes, mais curieusement pour la localisation finale, c'est majoritairement autour du lieu final que ça se passe, rarement entre deux endroits différents.
treas06.jpg

J'ai même testé la chasse avec deux livres "Cartes aux trésors" dans l'inventaire, même si les deux ont la même progression de lecture, il n'y en a qu'un qui est pris en compte pour la chasse courante, une fois le trésor trouvé, c'est le premier de l'inventaire qui disparaît, le deuxième retombe à 0% de lecture, et on peut relancer immédiatement une nouvelle lecture pour une nouvelle chasse.

Je suis même allé jusqu'à vendre le livre en cours de recherche du trésor, donc si on vend le livre, la quête reste inscrite dans le journal, mais on ne peut plus la poursuivre car le livre n'est plus consultable dans le menu Camp, ce qui est bien normal ! Est-il possible dans ce cas (possible) de faire disparaître la quête du journal au bout d'un certain temps ?
Par contre, si on rachète le livre là où on l'a vendu, la quête peut à nouveau être menée jusqu'au bout !  :grin:

En conclusion :
Le moteur fonctionne parfaitement bien, à part les deux petits problèmes d'affichage, rien de rédhibitoire.
J'ai donc intégré ta chasse au trésor aléatoire dans mon mod.
Merci encore pour ce script !  :grin:


Tout autre chose, j'ai vu comme toi le code de Lav sur la lecture aléatoire de livres, vraiment très intéressant !
Par contre, là, le côté aléatoire ne me convient pas, j'ai essayé de l'adapter pour une série de livres définis à l'avance, mais je n'ai pas réussi, c'est pas grave, cela m'a au moins permis d'utiliser une partie des codes pour créer un manager, disponible lors d'un campement, pour faire un tri dans les livres de mon inventaire et me proposer uniquement les livres intéressants à lire, avec une lecture directe. Exactement ce qu'il me fallait pour ma chasse au trésor prédéfinie, et pour d'autres choses comme obtenir divers indices, lancer une nouvelle quête...

Une question, je reviens sur le mode de lecture de la native que je trouve trop long. Est-il possible de simplement diminuer le temps de lecture pour arriver au 100% ? Lav le fait dans son code, par exemple si on a une condition plus élevée que celle requise pour la lecture, ce qui est une excellente idée.
Mais peut-on agir plus simplement sur ce paramètre de temps de lecture ?  :razz:

Bonne continuation pour Rigale, à plus !
Tchin !
:twisted:

 
Re BeerTolkien, je n'avais pas vu que tu avais éditer ton message...

la simple_triggers qui fait référence à la lecture des livres est sous cette ligne:
  # Read books if player is resting.

Le principe de base est que le jeu ajoute "4" a une variable de lecture toutes les heures ou le personnage lit un livre
(val_add, ":book_reading_progress", 4),
puis, quand le chiffre atteint 1000,
(ge, ":book_reading_progress", 1000),
le livre est considéré comme lu.

Tu peux donc facilement modifier ces deux valeurs pour réduire largement et facilement le temps de lecture.

A titre d'exemples, quelques modifications que j'ai apporté au système de lecture pour rigale:

Code:
	   #rigale book /knowledge modifications
	   (val_add, ":book_reading_progress", ":int"), #add intelligence value to book reading
	   (try_begin),#check literacy knowledge for reading bonus. very big bonus if player knows literacy knowledge
		   (troop_slot_eq,"trp_civ_tech_literacy",slot_civ_tech_status,3),
		   (val_add, ":book_reading_progress", 25),
	   (try_end),
	   
	   (try_begin),#check learning knowledge for reading bonus
		   (troop_slot_eq,"trp_civ_tech_learning",slot_civ_tech_status,3),
		   (val_add, ":book_reading_progress", 5),
	   (try_end),	   
	   
	   (try_begin),#rigale treasure. reading a simple treasure map goes much faster
		   (eq,"$g_player_reading_book","itm_book_treasure_map"),
		   (val_add, ":book_reading_progress", 10),
	   (try_end),
	   
	   (try_begin),#rigale necronomicon. reading the Necronomicon will take 6 times longer than a regular book.
		   (eq,"$g_player_reading_book","itm_book_necronomicon"),
		   (val_div, ":book_reading_progress", 6),
	   (try_end),	
	   
	   #rigale book /knowledge modifications end 



 
Back
Top Bottom