Bonjour GrandDesign,
Il y a un début à tout. Voila plus de 4 ans que je suis sur mon projet, et je ne suis pas déçu de toutes les fonctionnalités que j'y ai ajoutés (ça tourne à merveille). Donc avec le temps il n'y a pas de raison que tu n'y parvienne pas.
----------------------------------------
Donc pour l'installation de chevaux aléatoires sur une position, la méthode que tu utilises ne peut pas fonctionner. C'est plus complexe. (je t'indique ma propre méthode)
1- Il faut que tes 6 chevaux soient déclarés dans le fichier
module_items.py Il doivent se suivre, les uns sous les autres dans le fichier.
2- Dans le trigger que je t'ai donné. On va créer une variable locale, qui prendra la valeur du 1er cheval de ta liste(module_items_py). soit : "itm_cheval_alezan" . La variable locale commence toujours par le signe :
3- Dans la boucle principale (try_range.....) à (try_end), on va ajouter la fonction aléatoire, avec un intervalle de 0 à 6 (la valeur maxi est toujours égale à valeur maxi -1, donc dans ce cas prècis, valeur maxi = 5). Pour les 6 chevaux de ta liste. 0 = cheval 1, 1 = cheval 2 etc...
4- La valeur du cheval qui sera sur la position donnée, sera égale à la variable locale + valeur aléatoire du cheval. On utilise la fonction val_add (addition de valeur)
5 - Le script sera :
chevaux_scene = ( 0, 0.2, ti_once,
[],
[
(try_for_range, ":tic",0, 10), # nombre de position (10)
(scene_prop_get_instance,":element_instance", "spr_position_monture_2", ":tic"), # pour connaitre le matricule de l'objet (instance)
(neq, ":element_instance", -1), # si la position existe
(assign, ":ID_cheval", "itm_cheval_alezan"),
(store_random_in_range, ":rand", 0, 6),
(val_add, ":ID_cheval", ":rand"),
(prop_instance_get_position, pos1 , ":element_instance"), # recuperation de la position de l'objet
(set_spawn_position, pos1),
(spawn_horse,
":ID_cheval", 0),
(try_end),
])
--------------------------------
6 - Tu peux constater que 3 lignes de codes suffisent pour placer des chevaux aléatoires. Et la variable locale que l'on utilise dans la fonction spawn_horse.
---------------------------------
Tu trouveras l'ensemble des fonctions de python, dans le fichier
header_operations.py.
Pour ce qui est de paysans supplémentaires dans une scène (hors paysans qui se déplacent) Il faut que tu crée un nouveau NPC, sinon si tu utilise le même, il va y avoir une interférence avec ceux qui se déplacent (avec le script natif). Par contre pour les NPC la fonction est :
(spawn_agent,<troop_id>),
--------------------------------------------
Tu as raison le language du moteur du jeu n'est pas le language Python (le language du jeu je ne le connais pas, peut-être du C++ ??). C'est un language plus puissant et plus élaboré, c'est le code dur, il est protégé par les auteurs de Talesworld.
Chaque language à ces fonctions propres, mais chaque language à des fonctions communes, comme les conditions et autres. Et chaque language à sa propre syntaxe.
---------------------------------------------
Pour ce qui est des scènes, avec le damier de l'IA.
Les scènes de village, utilise le script qui permet le déplacement des paysans d'un point d'entrée à un autre en aléatoire. Ces points d'entrées doivent être impérativement sur le damier. Et les cases du damier doivent contourner tout les éléments qui y sont (bâtiments, et objets de décor imposants). Il peut arriver q'un NPC se bloque un moment sur un élément, si tu converses avec lui par exemple. Le script est lu sur un temps donné qui est programmé. Le NPC perd son chemin un moment, et dés que le script est relu, il recalcule le parcours du NPC. Et tu voit le NPC qui était bloqué, repartir dans la direction qui lui est attribué.
Sur les scènes aléatoires (combat) Ils n'utilisent pas le damier de l'IA, car ce n'est que des arbres, ou petits rochers. Si un NPC bloque dessus, le code dur se charge de le déplacer à gauche ou à droite légérement pour contourner un obstacle léger.
Pour les NPC qui sortent du damier, tu peux placer des barrières invisibles (AI_limiter) Mais je n'ai jamais eu ce problème de NPC indiscipliné
Courage
Salutations,