WB Augmenter l'argent des villages

Users who are viewing this thread

Bonjour

S'il vous plait...
Comment peut-on augmenter l'argent que possède les villages?
Passer de 0 à 1000 denars, par exemple.

Parce que quand on veut commercer avec les villages on peut acheter des articles mais pas vendre, vu qu'ils sont sans le sou!!! :mrgreen:
Donc on est obligé d'aller au marché d'une ville...


Dans quel fichier *.py (ou *.txt) se trouve le code?


Merci.
 
J'ai un peu regarder, ca a l'air un peu compliquer, en tout cas le fonctionnement interne, car l'argent influence directement la prospérité.
En tout cas, dans les triggers, tu as un
  # Refresh merchant inventories
qui est lancé toutes les 24 heures, et dans les scripts,
un "refresh_village_merchant_inventory".
Si le marchand de village a plus de 3000 gold, caramènera la somme maximum à 500, et le reste deviendra un point de prospérité (1/3000).

Donc ce que tu peux essayer (sans garantie), c'est par exemple:
      (try_begin),
        (gt, ":gold", 5500), #passage de 3500 à 5500. c'est cette valeur qu'il faut triturer a priori.
        (store_div, ":prosperity_added", ":gold", 3000),
        (store_mul, ":gold_removed", ":prosperity_added", 3000),
        (troop_remove_gold, ":merchant_troop", ":gold_removed"),
        (call_script, "script_change_center_prosperity", ":village_no", ":prosperity_added"),
      (try_end),

Ce qui devrait laisser beaucoup plus d'or de coté avant que celui  ci soit transformé en point de prospérité (toujours 1/3000 dans ce cas).

Dis moi si ça fonctionne.


 
je ne savais pas que l'argent se transforme en prospérité ! on apprend toujours quelque chose ...
mais le problème reste le 0 denar de départ  :razz: (en bref : comment ajouter une certaine somme d'argent à l'inventaire de chaque village au commencement du jeu ? )
 
Plusieurs façons, comme dh'ab.
Si vous n'êtes pas trop pressés, vous pouvez rajouter
(assign,":gold_to_change",1000),
      (try_begin),
        (le, ":gold",":gold_to_change"),
        (call_script,"script_troop_add_gold",":merchant_troop",":gold_to_change"),
      (try_end),

Avec ce script (que vous pouvez copier coller juste avant l'autre), le jeu ajoutera 1000 gold toutes les 24 heures, si le marchand possède moins de 1000 gold.
Vous pouvez changer ça en modifiant la valeur de ":gold_to_change".

Donc au bout de 24 heures, tout vos marchands villageaois devraient avoir 1000 gold. Attention à ne pas donner 3000 / jours, car dans ce cas, la prospérité augmenterait tous les jours.

L'intérèt de ce système est que vous n'avez pas besoin de lancer un nouveau jeu pour qu'il fonctionne.

A tester, mais ca devrait fonctionner

Edit: rajout de la ligne (assign,":gold_to_change",1000),
 
Merci pour vos réponses... Vous êtes plus réactifs que dans le forum anglais, à moins qu'ils ne comprennent pas Mon... english!! :sad:

Je suppose que je rajoute ce script dans module_scripts.py?


Un peu plus tard...


j'ai ce résultat de compil...

 
donc le script complet sera :

module_scripts :

Code:
  
# script_refresh_village_merchant_inventory
  # Input: arg1 = village_no
  # Output: none
  ("refresh_village_merchant_inventory",
    [
      (store_script_param_1, ":village_no"),
      (party_get_slot, ":merchant_troop", ":village_no", slot_town_elder),
      (reset_item_probabilities,0),

	  (party_get_slot, ":bound_center", ":village_no", slot_village_bound_center),

	  (assign, ":total_probability", 0),
      (try_for_range, ":cur_good", trade_goods_begin, trade_goods_end),		
	    (call_script, "script_center_get_production", ":village_no", ":cur_good"),
		(assign, ":cur_probability", reg0),

        (call_script, "script_center_get_production", ":bound_center", ":cur_good"),
		(val_div, reg0, 5), #also add 1/5 of bound center production to village's inventory.
		(val_add, ":cur_probability", reg0),

		(val_max, ":cur_probability", 5),	  	  
		(val_add, ":total_probability", ":cur_probability"),
      (try_end),
	  
	  (try_begin),
		(party_get_slot, ":prosperity", ":village_no", slot_town_prosperity),
		(val_div, ":prosperity", 15), #up to 6
		(store_add, ":number_of_items_in_village", ":prosperity", 1),
	  (try_end),

      (try_for_range, ":cur_good", trade_goods_begin, trade_goods_end),
	    (call_script, "script_center_get_production", ":village_no", ":cur_good"),
		(assign, ":cur_probability", reg0),

        (call_script, "script_center_get_production", ":bound_center", ":cur_good"),
		(val_div, reg0, 5), #also add 1/5 of bound center production to village's inventory.
		(val_add, ":cur_probability", reg0),

		(val_max, ":cur_probability", 5),
        (val_mul, ":cur_probability", ":number_of_items_in_village"),
		(val_mul, ":cur_probability", 100),
		(val_div, ":cur_probability", ":total_probability"),

        (set_item_probability_in_merchandise, ":cur_good", ":cur_probability"),
      (try_end),

      (troop_clear_inventory, ":merchant_troop"),
      (troop_add_merchandise, ":merchant_troop", itp_type_goods, ":number_of_items_in_village"),
      (troop_ensure_inventory_space, ":merchant_troop", 80),

      #Adding 1 prosperity to the village while reducing each 3000 gold from the elder
      (store_troop_gold, ":gold",":merchant_troop"),
     #--------------C'est la que ça se passe ---------------#
     (assign,":gold_to_change",1000),
      (try_begin),
        (le, ":gold",":gold_to_change"),
        (call_script,"script_troop_add_gold",":merchant_troop",":gold_to_change"),
      (try_end),
      (try_begin),
        (gt, ":gold", 5500), #passage de 3500 à 5500. c'est cette valeur qu'il faut triturer a priori.
        (store_div, ":prosperity_added", ":gold", 3000),
        (store_mul, ":gold_removed", ":prosperity_added", 3000),
        (troop_remove_gold, ":merchant_troop", ":gold_removed"),
        (call_script, "script_change_center_prosperity", ":village_no", ":prosperity_added"),
      (try_end),
    #------------------------------------------- ---------------#
]),
edit : voila c'est fait ...merci encore
 
@ fladin, oui, ca a l'air d'être bon. Attention cependant, vérifie que tu as bien refermé ton script, ce qui n'est pas le cas sur ton copier coller.
@lolitablue, tu as du le copier au mauvais endroit, ce qui fait que le jeu ne reconnaît pas les variables employées, car elles n'ont pas été définies auparavant.

Après, c'est simple à tester, hein. Pour aller plus vite, vous pouvez mettre le trigger de vérification des marchands à 1 au lieu de 24, ca initialisera le script toutes les heures au lieu de toutes les 24 heures, ca peut faire gagner du temps :smile:
 
Ho! Les gars!! Vous êtes merveilleux!!!

Je viens de le tester, ça marche!!

@Cernumos
Pour aller plus vite, vous pouvez mettre le trigger de vérification des marchands à 1 au lieu de 24, ca initialisera le script toutes les heures au lieu de toutes les 24 heures, ca peut faire gagner du temps

Avec ce script (que vous pouvez copier coller juste avant l'autre), le jeu ajoutera 1000 gold toutes les 24 heures, si le marchand possède moins de 1000 gold.



Mais en fait, je ne veux pas que les villages aient beaucoup d'argent, ce n'est pas le but recherché car en vrai un village n'est pas plus riche qu'une ville. Ce que je veux c'est qu'il ait au moins 200 denars, juste assez pour pouvoir lui acheter des vivres quand on est loin d'une ville de notre faction de manière à ne pas donner trop d'argent à un village ennemie ou étranger.
Est-ce que je me fais bien comprendre?

... ... Je ne vois pas où modifier le 24 en 1!! :roll:

Rendez-vous à la taverne, c'est ma tournée!!!

Merci pour le code, j'ai posté deux sujets sur ce problème sur le forum anglais depuis deux ou trois jours, rien!!!!
 
Dans ce cas, dans le bout de script ci dessus, remplace 1000 par 200.  (assign,":gold_to_change",200),  Par contre, ca ne reviendra pas en arrière, il faudrait commencer un nouveau jeu pour voir le changement.
   
Tu peux aussi, pour ajouter un peu de variété, faire un truc comme ça:
Code:
      (try_begin),    #si
        (le, ":gold",10),    #la variable locale ":gold", definie plus haut dans le script, est inferieur ou egale à 10
        (store_random_in_range,":random_gold",150,250), #cree la variable locale ":random_gold", et affecte lui une valeur aleatoire comprise en 150 et 250
        (call_script,"script_troop_add_gold",":merchant_troop",":random_gold"), #et en faisant appel a un script (script_) appele "troop_add_gold", donne cette valeur en or (":random_gold") au marchand (":merchant_troop") du village.
      (try_end),  #fin du "si"
tu le copie colle à la place de
    (assign,":gold_to_change",1000),
      (try_begin),
        (le, ":gold",":gold_to_change"),
        (call_script,"script_troop_add_gold",":merchant_troop",":gold_to_change"),
      (try_end),

Ce que ca fera, c'est que si il y a 10 or ou moins dans le village, le jeu rajoutera une valeur aléatoire comprise entre 150 et 250 or au village. La vérification se faisant toutes les 24 heures.

pour les 24, cherche, via notepad++ par exemple, dans modules_simple_triggers une ligne comme celle là:
# Refresh merchant inventories
Juste dessous, tu devrais trouver une trigger avec, comme pour toutes les triggers, un chiffre au début. Ce chiffre, pour les simple_triggers, est la périodicité de la vérification. Donc si tu vois 24, le jeu lancera cette trigger tous les 24 heures (du jeu, pas 24 heures réelles, hein ^^).
Donc si tu vois 24*7, ce sera toutes les semaines, et si tu vois 1, ce sera une vérification horaire. Je ne sais pas si les simple_triggers acceptent les décimales, je ne crois pas.

Donc tu as juste à changer le24 en 1.

Dis moi si tu n'y arrives toujours pas. Je suis volontairement un peu évasif, je préfère que tu apprennes à voler (dans les airs) plutôt que de rester accrocher au sol.
 
Avec plaisir, tant que ça reste dans ce genre de domaine, je devrais pouvoir répondre a certaines questions :smile: Et faut pas hésiter :smile:
 
Cernunos said:
Dans ce cas, dans le bout de script ci dessus, remplace
pour les 24, cherche, via notepad++ par exemple, dans modules_simple_triggers une ligne comme celle là:
# Refresh merchant inventories
Juste dessous, tu devrais trouver une trigger avec, comme pour toutes les triggers, un chiffre au début. Ce chiffre, pour les simple_triggers, est la périodicité de la vérification. Donc si tu vois 24, le jeu lancera cette trigger tous les 24 heures (du jeu, pas 24 heures réelles, hein ^^).
Donc si tu vois 24*7, ce sera toutes les semaines, et si tu vois 1, ce sera une vérification horaire. Je ne sais pas si les simple_triggers acceptent les décimales, je ne crois pas.

Donc tu as juste à changer le24 en 1.

Dis moi si tu n'y arrives toujours pas. Je suis volontairement un peu évasif, je préfère que tu apprennes à voler (dans les airs) plutôt que de rester accrocher au sol.

Merci, j'ai trouvé le triggers...

# Refresh merchant inventories
  (168,
  [
      (try_for_range, ":village_no", villages_begin, villages_end),
        (call_script, "script_refresh_village_merchant_inventory", ":village_no"),
      (try_end),
    ]),


... Le chiffre c'est: 168
Si j'ai bien compris c'est 168 heures! c'est à dire une semaine. Donc l'IA ajoutera 200 denars toutes les semaine ou refera le 'niveau' à 200 denars?

Dans ce cas, ça me convient très bien, je vais doubler la somme et laisser le rafraichissement à 168, parce qu'on ne vend pas de la nourriture tous les jours.

Mais ça peut être utile de pouvoir acheter des vivres dans n'importe quel village à proximité, mais il ne faut pas qu'ils deviennent trop riche, non plus!

A surveiller!!! :cool:

 
Autant pour moi, c'était 24 sur mon module_simple_triggers, j'ai peut être déjà bidouillé ça, et j'ai oublié de le noter ^^

Toutes les semaines, oui. Mais ça n'ajoutera 200 dinars que si la somme disponible au moment de la vérification est inférieur ou égale à 200 dinars, en tout cas dans le script que j'ai proposé.
Petite explication:
(168,  #toutes les 168 heures
  [
      (try_for_range, ":village_no", villages_begin, villages_end), #pour chaque village situe dans la liste commencant par villages_begin et finissant par villages_end, et stocke sous la forme d'une variable locale appelee ":village_no"
        (call_script, "script_refresh_village_merchant_inventory", ":village_no"), #appliquer le script reflesh_village_merchant_inventory aux villages identifies individuellement au dessus et stockes sous la forme de la variable locale ":village_no".
      (try_end), #fin de la verification
    ]),

Si tu remplaces 168 par 1, cette vérification se fera toutes les heures effectivement.
 
Très bonne et claire explication!!

J'ai mis ton nouveau script...

Merci et bonne journée. :razz:


Est-ce qu'il existe des bouquins pour apprendre à coder pour M&BW?

J'en ai vraiment besoin!!! :roll:
 
Back
Top Bottom