WB comment ajouter une faction déja crée à la liste du rapport des relations ?

  • 主题发起人 FantasyWarrior
  • 开始时间

正在查看此主题的用户

FantasyWarrior

Salut

je me retiens depuis un moment de demander de l'aide,car je pourais rechercher,mais la ca m'avancerais bien franchement  :mrgreen:

donc svp,comment et ou ajouter une faction que j'es faite a la liste des raports de relation entres les factions.

c'est pas une faction complete,mais juste mise a module_faction /partie_template,car c'est une faction non officiele (qui ne prend pas de chateaux ect...) mais je voudrais afficher mes rapports avec eux.

merci !
 
Comme les outlaws je suis pas sur que sa puisse se faire... je vais fouiner dans le module scrip et je te dit si j'ai trouver quelque chose..
 
Oui exactement,comme les outlaws,ben apres tout c'est une faction...merci pour le coup de main

si tu veux le savoire de mon coté je m'arache la tete a reproduire le script de "l'auto-talk" si on s'approche du poivrot de la taverne il nous parle de force...ce qu'il me faut pour une sentinele quit doit dire "halte!"  :mrgreen:

le poivrot ou le marchand du debut...pourquois il me sert toujours d'exemple celui la?  :lol:
 
Ha! parfait merci bOuYA_k  :eek:


:mrgreen:


vue que mon mod aurais besoin d'avancer un bon coup ,je me permet de poster un bloc de mon mission template ou un pnj (en place) doit parler a une certaine distance en "auto-talk",c'est la copie du beligerent-drunk.

Hors,dés que j'entre dans la scene,j'ai de suite le dialogue du pnj et sans fin "halte! on passe pas..." ,je pensse que c'est mon ":cur_agent" qui es mal assigné,je cherche plus tard comment on fait cette entré ,ou si on peut m'avancer ca serais geniale  :wink:

插入代码块:
(1, 0, 0,[], 
	  [	  
	    (try_for_agents, ":cur_agent"),
	       (agent_get_troop_id, ":cur_agent_troop", ":cur_agent"),
	       (assign, "trp_rebel_montpelier_tower_1", ":cur_agent"),
	       (try_end),


              (get_player_agent_no, ":player_agent"),
              (agent_get_position, pos0, ":player_agent"),
	      (agent_get_position, pos1, ":cur_agent"),
	      (get_distance_between_positions, ":dist", pos0, pos1),
	      (position_get_z, ":pos0_z", pos0),
	      (position_get_z, ":pos1_z", pos1),
	      (store_sub, ":z_difference", ":pos1_z", ":pos0_z"),
	      (try_begin),
	        (le, ":z_difference", 0),
	        (val_mul, ":z_difference", -1),
	      (try_end),
	      (store_mul, ":z_difference_mul_3", ":z_difference", 3),
	      (val_add, ":dist", ":z_difference_mul_3"),
	      (store_random_in_range, ":random_value", 0, 200),
	      (store_add, ":400_plus_random_200", 400, ":random_value"),
	      (le, ":dist", ":400_plus_random_200"),
  	      (start_mission_conversation, "trp_rebel_montpelier_tower_1"),
              (try_end),  
	  ]),



j'ai déja recherché au topic des Q&A a la forge,et le seul rapport que j'ai trouvé c'est madvader qui indique que le bloc que j'ai copié du beligerent-drunk comporte tout ce qu'il faut....mais je me suis juste gouré sur un truc.

merci ! sinon je m'en occuperais ,mais avec tout le taf avec le quel je me retrouve d'un coup depuis que j'attaque des nouvelles missions,ca déborde  :???:
 
插入代码块:
(try_for_agents, ":cur_agent"),
  (agent_get_troop_id, ":cur_agent_troop", ":cur_agent"),
  (assign, "trp_rebel_montpelier_tower_1", ":cur_agent"),
(try_end),
Cette partie est plutôt incorrecte, car tu assignes l'agent courant à la troupe trp_rebel_montpelier_tower_1, dis comme ça c'est possible, mais dans la pratique c'est faux, car tu fait une boucle pour... assigner a une 'constante' la valeur du dernier agent apparu sur la carte.

Je ne comprend pas vraiment trop ce que tu voulais faire ici, surement un truc comme ça plutôt :
插入代码块:
(assign, ":guard_agent", 0),
(try_for_agents, ":cur_agent"),
  (agent_get_troop_id, ":cur_agent_troop", ":cur_agent"),
  (eq, "trp_rebel_montpelier_tower_1", ":cur_agent_troop"),
  (assign, ":guard_agent", ":cur_agent"),
(try_end),
Pour stocker ton agent qui est le garde (donc qui est la troupe trp_rebel_montpelier_tower_1) dans guard_agent avec en plus un moyen de sortie pour si ton garde n'existe pas (pour quelque raison qui soit) en regardant si il est supérieur a 0.

Ensuite au niveau de la distance, je ne comprend pas pourquoi tu ajoute la coordonnée de l'axe z dans l'opération ? Il me semble que l'opération get_distance_between_positions regarde bien la différence de hauteur des deux positions.
De plus le fait de jouer avec une valeur aléatoire n'est pas très jolie, vu que cette partie de code sera lancé toute les secondes, et a chaque fois le nombre sera différent.

Bon pour résumer en version TL;DR :
Si j'ai bien compris il te faut plutot quelque chose comme ça :
插入代码块:
(1, 0, 0,[], 
[
  (assign, ":guard_agent", 0),
  (try_for_agents, ":cur_agent"),
    (agent_get_troop_id, ":cur_agent_troop", ":cur_agent"),
    (eq, "trp_rebel_montpelier_tower_1", ":cur_agent_troop"),
    (assign, ":guard_agent", ":cur_agent"),
  (try_end),
  (get_player_agent_no, ":player_agent"),
  (agent_get_position, pos0, ":player_agent"),
  (agent_get_position, pos1, ":guard_agent"),
  (get_distance_between_positions, ":dist", pos0, pos1),
  (try_begin), # je mes ça pour éviter l’échec du trigger, mais c'est pas très important
    (le, ":dist", 500), # 500 correspond à 5 mètres il me semble?
    (start_mission_conversation, "trp_rebel_montpelier_tower_1"),
  (try_end),
]),

Et ça devrait être mieux je pense.

Une note à part, il vaut mieux éviter d'utiliser les variables initialisés dans un try_for_range ou autre itérateur (comme try_for_agents) en dehors de la boucle, à moins que la boucle soit arrêté au bon endroit (le try_for_agents ne peut pas être arrêté).
 
T'es genial merci !  :razz:

Une bonne soiré de dévelopement qui s'anonce grace a ton aide,en fait j'en etait au stade de copie de codes a une situation équivalente (beligerent-drunk) et je m'apretais a degrossire tout ca....ca m'aurais pris 3 jours ,donc merci ! je te tiens au courant au cas ou ca te plairais de coder ces trucs,dans le cas contraire t'as qu'a pas répondre,c'est assez évident  :mrgreen:

je pensse que je doit te citer comme etant un des codeurs de "l'equipe" pour le mod,avec seek n destroy/hurleur...car vous avez parfois fait mes codes de A a Z,en tout cas bien aidé.

MERCI  :eek:






EDIT: t'es un dieu bOuYA_k  :razz: l'auto talk marche impec et t'as bien choisis la distance...du premier coup !  :shock:


edité:en plus cohèrent  :mrgreen:

assigner au dialogue dedié du garde pendant le start mission talk

插入代码块:
  [anyone,"start", [(eq, "$g_talk_troop", "trp_rebel_montpelier_tower_1"),
                     ],
   "Halte! qui es tu,et que fait tu ici ?.", "pin_sent1", []],

 [anyone|plyr ,"pin_sent1", [],  "Michel m'a envoyé ici pour rencontrer votre chef.", "pin_welcom", [(assign, "$parler_guard_montpellier", 1),]],
 [anyone|plyr ,"pin_sent1", [],  "Je me suis égaré mais je m'en vais.", "close_window", []],
  
 [anyone ,"pin_welcom", [],"Ah! tres bien,tu peut passer camarade.", "close_window",[]],    
 


et dans le mission template de la scene

插入代码块:
(1, 0, 0,[(eq, "$parler_guard_montpellier", 1),
          (assign, "$parler_guard_montpellier2", 1),

], 
[
  (eq, "$parler_guard_montpellier2", 0),
  (assign, ":guard_agent", 0),
  (try_for_agents, ":cur_agent"),
    (agent_get_troop_id, ":cur_agent_troop", ":cur_agent"),
    (eq, "trp_rebel_montpelier_tower_1", ":cur_agent_troop"),
    (assign, ":guard_agent", ":cur_agent"),
  (try_end),
  (get_player_agent_no, ":player_agent"),
  (agent_get_position, pos0, ":player_agent"),
  (agent_get_position, pos1, ":guard_agent"),
  (get_distance_between_positions, ":dist", pos0, pos1),
  (try_begin), 
    (le, ":dist", 500), 
    (start_mission_conversation, "trp_rebel_montpelier_tower_1"),
  (try_end),
]),

pas encore testé mais c'est plus ecrire un truc plus evident rapidement  :lol:
 
FantasyWarrior 说:
note:bien sur ne pas oublier a la fin du dialogue dédié a son garde (assign, ":guard_agent", 1),
non je veux dire assigner une variable a la fin du dialogue et reporter a la condition pour que le garde puisse parler ou non  :mrgreen:

sinon,il vous lache pas tant qu'on es a 5 mettres  :mrgreen:

c'est ce qui m'as semblé en tout cas...je sort juste du test la...
Oui, c'est vrai que j'ai pas pensé à ça, mais oui avec ce que j'ai mis c'est ce qui se passe. :lol:


FantasyWarrior 说:
et pour le report des factions j'ai changé au menu
cur_kingdom par cur_faction...mais ca me met toujours que les kingdoms,pourtant j'ai mis ma faction entre le kingdom_begin/end...bon je precise plus tard,je doit avancer.
Ta faction doit donc etre 'morte' ou 'inactive' vu qu'elle ne possede pas de seigneurs ni de territoires, et ce menu ne prend en compte que les factions actives.

Une solution serait de mettre
插入代码块:
(this_or_next|faction_slot_eq, ":cur_kingdom", slot_faction_state, sfs_active),
(eq, ":cur_kingdom", "fac_tafaction"),
(neq, ":cur_kingdom", "fac_player_supporters_faction"),
Bien sur ça ne fonctionne que si tu as mis ta faction entre kingdoms_begin et kingdoms_end, ce que tu m'as dis que tu as fait, donc tout est ok :smile:.

FantasyWarrior 说:
插入代码块:
(1, 0, 0,[(eq, "$parler_guard_montpellier", 1),
          (assign, "$parler_guard_montpellier2", 1),

], 
[
  (eq, "$parler_guard_montpellier2", 0),
  (assign, ":guard_agent", 0),
  (try_for_agents, ":cur_agent"),
    (agent_get_troop_id, ":cur_agent_troop", ":cur_agent"),
    (eq, "trp_rebel_montpelier_tower_1", ":cur_agent_troop"),
    (assign, ":guard_agent", ":cur_agent"),
  (try_end),
  (get_player_agent_no, ":player_agent"),
  (agent_get_position, pos0, ":player_agent"),
  (agent_get_position, pos1, ":guard_agent"),
  (get_distance_between_positions, ":dist", pos0, pos1),
  (try_begin), 
    (le, ":dist", 500), 
    (start_mission_conversation, "trp_rebel_montpelier_tower_1"),
  (try_end),
]),
Ça ne devrait pas fonctionner comme il faut, la variable parler_guard_montpellier est initialisé a 0 au début, donc tu ne poura jamais entrer dans le second bloc du trigger si dans ton bloc de conditions tu demande une valeur égale a 1.

edit :
Il te faudrait plutot quelque chose comme ça :
插入代码块:
(1, 0, 0,[(eq, "$parler_guard_montpellier", 0),
], 
[
  (assign, ":guard_agent", 0),
  (try_for_agents, ":cur_agent"),
    (agent_get_troop_id, ":cur_agent_troop", ":cur_agent"),
    (eq, "trp_rebel_montpelier_tower_1", ":cur_agent_troop"),
    (assign, ":guard_agent", ":cur_agent"),
  (try_end),
  (get_player_agent_no, ":player_agent"),
  (agent_get_position, pos0, ":player_agent"),
  (agent_get_position, pos1, ":guard_agent"),
  (get_distance_between_positions, ":dist", pos0, pos1),
  (try_begin), 
    (le, ":dist", 500), 
    (start_mission_conversation, "trp_rebel_montpelier_tower_1"),
  (try_end),
]),
En effet tu n'as pas vraiment besoin d'une second variable pour faire ça.


FantasyWarrior 说:
EDIT: t'es un dieu bOuYA_k
:shock:



Ps: Rolala ... je m'en sort plus avec tes édit quand je suis en train de répondre :mrgreen:
En fait non, j'ai juste très mal ... faut que je me couche moi ...
 
Oui désolé pour les edit  :lol: ce soir je suis survolté faut pas essayer de me suivre  :lol:

merci pour les derniers updates de codes,en fait je me suis corigé entre temps sur la condition que le guarde parle en auto talk ou non,ca mérite un dernier edit ca  :lol: (c'etait le meme conclusion  :wink:)

merci et bonne nuit  :mrgreen:


allez encore un edit  :lol: non,c'est juste que si quelqu'un veux suivre tout ca pour l'auto talk du garde qui doit parler qu'une fois,la condition variable n'es pas tout a fait juste,en fait on aura jamais de ,(eq, "$parler_guard_montpellier", 0),

il faut plutot

插入代码块:
(1, 0, 0,[(assign, "$parler_guard_montpellier2", 0),
          (try_begin),
          (eq, "$parler_guard_montpellier", 1),
          (assign, "$parler_guard_montpellier2", 1),
          (try_end),
          ], 
[
  (eq, "$parler_guard_montpellier2", 0),
  (assign, ":guard_agent", 0),
  (try_for_agents, ":cur_agent"),
    (agent_get_troop_id, ":cur_agent_troop", ":cur_agent"),
    (eq, "trp_rebel_montpelier_tower_1", ":cur_agent_troop"),
    (assign, ":guard_agent", ":cur_agent"),
  (try_end),
  (get_player_agent_no, ":player_agent"),
  (agent_get_position, pos0, ":player_agent"),
  (agent_get_position, pos1, ":guard_agent"),
  (get_distance_between_positions, ":dist", pos0, pos1),
  (try_begin), 
    (le, ":dist", 500), 
    (start_mission_conversation, "trp_rebel_montpelier_tower_1"),
  (try_end),
]),

c'est pour ca que je savais qu'il fallais 2 variables dans cette histoire mais ca c'etait un peut enmellé dans ma tete.

désolé pour la migraine que vous avez chopé en reussissant a tout comprendre  :mrgreen:

et bien sur reporter au dialogue du garde
插入代码块:
  [anyone,"start", [(eq, "$g_talk_troop", "trp_rebel_montpelier_tower_1"),
                     ],
   "Halte! qui es tu,et que fait tu ici ?.", "pin_sent1", []],

 [anyone|plyr ,"pin_sent1", [],  "Michel m'a envoyé ici pour rencontrer votre chef.", "pin_welcom", [(assign, "$parler_guard_montpellier", 1),]],
 [anyone|plyr ,"pin_sent1", [],  "Je me suis égaré mais je m'en vais.", "close_window", []],
  
 [anyone ,"pin_welcom", [],"Ah! tres bien,tu peut passer camarade.", "close_window",[]],    
 
 
désolé,double post mais il me faut aller a fond,pour pouvoir terminer cet énorme mod  :mrgreen:

je repose déja la meme question qu'a la forge.

a quel bloc puis je trouver le script qui fait qu'un seigneur change de faction svp ?
c'est pour inclure mon code ,pour qu'il ne soit pas pris en compte par jeanne d'arc...et si jamais il ne restait que jeanne d'arc a la faction 1 ?...ca crain pour la stabilité ou le royaume ne s'eteind pas simplement car il restera toujours un lord ? a moin qu'il passe par l'autre script d'etre exilé du royaume que je peut laisser.



Et,de plus il me faudrais rassembler si c'etait possible,des codeurs volontaires pour décortiquer completement les codes relatifs aux combats/aux scenes de combats,conditions de victoire...

c'est pour les réecrires dans des scenes de combats speciales.j'en reparlerais.

pas de problème si perssone ne répond a ca,normale ca prend la tete,mais je tente en tout cas  :mrgreen:
 
Pour le changement de faction c'est dans simple_triggers :

Cherches pour ces deux lignes en commentaire :
#Individual lord political calculations
#Check for lords without fiefs, auto-defections, etc


La partie changement de faction commence réellement a partir d'ici :
#Auto-indictment or defection

Pour ce qui concerne le changement de faction tant qu'il reste un seigneur, ou même s'il ne reste que le roi, la faction ne sera pas considéré comme 'morte'. De plus il est très difficile pour une faction de perdre tout ces seigneurs.


Pour ce qui est des conditions de victoire, c'est le trigger common_battle_check_victory_condition dans mission_templates
Les conditions de défaite sont souvent sous cette forme :
插入代码块:
(1, 4, ti_once, [(main_hero_fallen)],
          [
              (assign, "$pin_player_fallen", 1),
              (str_store_string, s5, "str_retreat"),
              (call_script, "script_simulate_retreat", 10, 20, 1),
              (assign, "$g_battle_result", -1),
              (set_mission_result,-1),
              (call_script, "script_count_mission_casualties_from_agents"),
              (finish_mission,0)]),
En tout cas c'est le cas pour le combat en terrain ouvert.

Si tu as des demandes plus précises concernant les codes à décortiquer...
 
Incroyable! merci bcp  :razz:

en fait pour la suite des demandes tu va plus vite que moi la  :lol: je te precise ca ce soir,quand j'attaque cette scene

le joueur es sur un bateau sur un fleuve,et es attaqué par des pirates

je doit d'abord essayer par moi meme,jeter un oeil sur les tutos et je te demande ce qui manque,car meme avec les tutos il manque toujours un truc  :mrgreen: et si les codes complexes mais pas infesables te passionent toujours,j'es pour toi des trucs a faire et situations sur mesure que tu va addorer  :razz:

mais la tu m'etone un peut tu m'as tout fillé d'un coup,en fait c'etait déja un post pour attirer de l'aide et motiver...ce soir donc,sauf si je m'en sort.

merci ,ca va hyper vite quand c'est comme ca  :eek:

bon,je te dit quand meme vite fait comme ca ce qui m'attend,et si t'en veut une part  :mrgreen:

une scene
des pnj tranquiles
apres un dialogue ou une action comme :l'un d'eux es mort = ils recoivent leurs flags et se metent en combat...ce genre de trucs.

apres il me falais,dans un de mes quartiers de villes,il y a des towns walkers/deux soldats qui doivent se battrent (type tutorial du jeux ,rien de mechant,mais ils doivent se battre sans fin...)  et enfin dans cette meme scene,qui es une caserne en ville,on a notre instructeur qui fait entre autre une petite bataille avec nous,comme pour le tuto encore...

j'en reparle quand je suis pret  :eek:  tu m'as surpris la  :lol:

merci !


edit:parfait ! pour empecher le changement de royaume,les auteurs d'HYW avaient déja fait ces entrés

插入代码块:
        #Auto-indictment or defection
        (try_begin),
			(this_or_next|troop_slot_eq, ":troop_no", slot_troop_occupation, slto_kingdom_hero),
				(eq, ":troop_no", "trp_player"),		
		
			(try_begin),
				(eq, ":troop_no", "trp_player"),
				(assign, ":faction", "$players_kingdom"),
			(else_try),
				(store_faction_of_troop, ":faction", ":troop_no"),
			(try_end),
		
			(faction_get_slot, ":faction_leader", ":faction", slot_faction_leader),
			(neq, ":troop_no", ":faction_leader"),
			(call_script, "script_troop_get_relation_with_troop", ":troop_no", ":faction_leader"),
			(le, reg0, -75),
#############HYW###############			
                       (neq, ":troop_no", "trp_knight_2_7"),
		       (neq, ":troop_no", "trp_knight_2_18"),
                       (neq, ":troop_no", "trp_knight_1_12"),	
                       (neq, ":troop_no", "trp_knight_4_2"),			
                       (neq, ":troop_no", "trp_knight_4_19"),			
#############HYW###############				
			(call_script, "script_cf_troop_can_intrigue", ":troop_no", 0), #Should include battle, prisoner, in a castle with others 
		
			(store_random_in_range, ":who_moves_first", 0, 2),


je vais faire le ménage,et mieux qu'enpecher que jeanne change de camp,je vais conditioner,que si c'est son tour > jump au menu "jeanne d'arc a été aretée et jugée..."  :razz:

ca c'est bon,c'est rapide,parfait ! par contre le report de relations entres factions et factions non officielles rien a faire  :???: je me demande si je fait pas juste un menu presentations des faction avec la condition qu'elles soient découvertes avec une condition variable,donnée dés qu'on parle au chef de la faction en question  :roll:

j'ai des demandes plus exitantes plus tard...t'as des aspirines ?  :lol:

il s'agit donc de recrer des modèles de combats ou des les reporter tel quels,pour des nouvelles scenes de missions...je commence a m'attaquer a la premiere scene/situation
le joueur qui prend un bateau et apres le menu "vous etes ataqué!" on a ce qui ressemble aux batailles navales,je vais voire le tuto de ce truc déja,il devrais y avoire les infos sur les branchements de codes pour les comabts...

edit:pas de panique ! je ne demande pas les raccords : game menus/dialogues/mission template ! je maitrise ! on parle que du script de combat hein! ...je tiens au courant....


edit;j'es presque fini cette scene,bon sang ,ca déchire  :lol:




edit: je comence a prendre conaissance des scripts en rapport aux combats a mission template,et je pensse qu'on peut creer des trucs supers,je me demande quand meme:

si on a une equipe avec le flag 1 (kingdom 1) et l'autre avec le kingdom 3 qui sont normalement en guerre.

si j'ai un combat indépendant du jeu dans une scene et qu'ils ont les flags 1/3 alors qu'en cour de partie ces deux royaumes sont en paix...ils ne vont pas s'attaquer ou si ?
 
FantasyWarrior 说:
si on a une equipe avec le flag 1 (kingdom 1) et l'autre avec le kingdom 3 qui sont normalement en guerre.

si j'ai un combat indépendant du jeu dans une scene et qu'ils ont les flags 1/3 alors qu'en cour de partie ces deux royaumes sont en paix...ils ne vont pas s'attaquer ou si ?
Les équipes dans les missions_template sont différentes de celles sur la map, donc deux factions en guerre pourraient se retrouver à combattre ensemble sur une mission_template sans problème.

Il existe des team, ou équipes, qui permettent d'identifier qui est contre qui.
Dans les missions, pour que deux équipes soient contre, il faut leur mettre une relation négative avec :
插入代码块:
(team_set_relation, 0, 1, -1),
Qui va mettre l’équipe 0 et 1 en ennemis (relation -1).
Par défaut les relations sont à 0, donc 'alliés' ou plutôt neutres.
Il n'y a que 4 équipes disponibles.
Pour faire apparaitre des troupes dans une certaine faction, il faut soit lui donner la faction dès son apparition.
插入代码块:
(ti_on_agent_spawn, 0, 0,
[
  (store_trigger_param_1, ":agent_no"),
  (agent_set_team, ":agent_no", 1),
], []),
Qui met tout les agents qui apparaissent dans l'equipe 1
Soit utiliser les définitions des entry_points, qui disent que tout agent apparaissant ici sera de telle faction.
插入代码块:
(0,mtef_scene_source|mtef_team_1,0,0,1,[]),
Tout les agents apparaissant sur le point 0 seront dans l’équipe 1 (avec le mtef_team_1).

Après pour pouvoir faire une scène normale, puis d'un coup avoir un combat, c'est simple, il suffit de changer de faction certains agents, puis de mettre les bonnes relations pour que les combats commencent.
 
Merci,je voulais etre abssolument sur pour les flags  :razz:

pour le reste c'est ce que je decouvre,c'est tres interessant,en fait dans un mission template dedié aux combats t'as les racourcis

      common_battle_check_friendly_kills,
      common_battle_check_victory_condition,
      common_battle_victory_display,

qui sont detaillés en haut de ce fichier et si t'as besoin d'en changer une condition tu le develope plutout sous cette forme

(press tab>condition partir que apres les conditions de victoires remplies,et apres ce combat je vais dans un autre menu,c'est en fait un jump sur la world map avec les initialisation du premier saut sur la world map)qui sont dans le mnu_start_pirates_victoire et le  mnu_start_pirates_defaite en fait...
le menu defaite t'enleve de l'or et les objets que tu t'es enmerdé a choisire pendant 2 heures,j'addore faire soufrire les joueurs  :lol:

插入代码块:
    (ti_tab_pressed, 0, 0, [],
  [
    (try_begin),
    (eq, "$g_battle_won", 1),

     (mission_enable_talk),

     (jump_to_menu, "mnu_start_pirates_victoire"),
     (finish_mission,0),    
     (try_end),

     (display_message, "str_cannot_leave_now"),
    ]),


:razz:

j'apprend tout ca a fond et ca rentre bien,ca sera indispenssable pour creer mes scenes de combats speciales,comme dans un vrais rpg en fait:

-quete active
-une scene originale comme un pont/une rue/un bateau...+des enemis et alliés
-tous morts dans un camp ou un autre = quete accomplie/failed

j'inclue meme le battle continuation  :razz:

merci pour tes indication,je repose une question dés que j'ai besoin,ma premiere scene d'attaque marche tres fort,le debut du mod fait tres pro,ca fait plaisir  :smile:

je joue meme des sons comme > debut ataque pirate > "les pirates,les piraaaates!!!"  :lol:  si t'as des idées pour embelire encore...et merci pour les indications  :razz: ca m'as vraiment aidé!


edit;ha si en fait,j'ai une question,comment on fait pour jouer les anims de victoire? léve les bras/"houra ,ouais!..."  :lol: stp...
 
Je suppose que c'est avec cette opération :
插入代码块:
(agent_set_animation, <agent_id>, <anim_id>, [channel_no]),

Et l'annimation correspondante doit être 'cheer' et 'cheer_stand' pour ceux à pied.

Donc ça doit donner un truc comme ça :
插入代码块:
(agent_set_animation, ":agent_no", "anim_cheer_stand", 0),
Je ne pense pas que ça jouera le son.
Mais il me semble que les IA jouent cette animation automatiquement à la fin des combats, quand il ne reste plus d'ennemis.


FantasyWarrior 说:
pour le reste c'est ce que je decouvre,c'est tres interessant,en fait dans un mission template dedié aux combats t'as les racourcis

      common_battle_check_friendly_kills,
      common_battle_check_victory_condition,
      common_battle_victory_display,

qui sont detaillés en haut de ce fichier et si t'as besoin d'en changer une condition tu le develope plutout sous cette forme
Oui, d'ailleurs je pense qu'il est préférable de mettre tout les triggers de cette manière, comme ça ils peuvent être utilisés dans plusieurs missions_template sans problème, il sont aussi plus facile à retrouver vu qu'ils sont nommés.
 
merci pour tout ,je vais essayer  :grin:

pour l'instant tout se passe bien alors j'ai pas de question,tu m'as fait gagné quelques jours en tout cas,sur  :eek:


edit:pfffou,j'arive a sortire des trucs tres poussés,mais des fois je coince des heures sur des coneries  :mad:

es ce que ca a l'air enfin bon ce script ?  :roll: tout se passe comme il faut maintenant,mais j'aimerais bien un avis en plus:

apres un combat/si on a les objets inventaire ou equipés/remove...


插入代码块:
    ("start_pirates_defaite",mnf_disable_all_keys,
    "{s16}^^Les pirates vous on vainus! ils on pris certains de vos objets perssonels et se sont emparés de vostre boursse,vous pouvez vous estimer heureux qu'ils vous es laissé la vie sauve!",
    "none",
    [

     (try_begin),
     (this_or_next|player_has_item, "itm_gambeson"),
      (troop_has_item_equipped,"trp_player","itm_gambeson"),
     (troop_remove_item, "trp_player", "itm_gambeson"),
     
     (else_try),
     (this_or_next|player_has_item, "itm_bastard_sword_a"),
      (troop_has_item_equipped,"trp_player","itm_bastard_sword_a"),
     (troop_remove_item, "trp_player", "itm_bastard_sword_a"),
     
     (else_try),
     (this_or_next|player_has_item, "itm_bastard_sword_b"),
      (troop_has_item_equipped,"trp_player","itm_bastard_sword_b"),
     (troop_remove_item, "trp_player", "itm_bastard_sword_b"),
     
     (else_try),
     (this_or_next|player_has_item, "itm_sword_medieval_a"),
      (troop_has_item_equipped,"trp_player","itm_sword_medieval_a"),
     (troop_remove_item, "trp_player", "itm_sword_medieval_a"),
     
     (else_try),
     (this_or_next|player_has_item, "itm_crossbow"),
      (troop_has_item_equipped,"trp_player","itm_crossbow"),
     (troop_remove_item, "trp_player", "itm_crossbow"),
     
     (else_try),
     (this_or_next|player_has_item, "itm_bolts"),
      (troop_has_item_equipped,"trp_player","itm_bolts"),
     (troop_remove_item, "trp_player", "itm_bolts"),
     
     (else_try),
     (this_or_next|player_has_item, "itm_light_crossbow"),
      (troop_has_item_equipped,"trp_player","itm_light_crossbow"),
     (troop_remove_item, "trp_player", "itm_light_crossbow"),
     
     (else_try),
     (this_or_next|player_has_item, "itm_mail_coif"),
      (troop_has_item_equipped,"trp_player","itm_mail_coif"),
     (troop_remove_item, "trp_player", "itm_mail_coif"),
     
     (else_try),
     (this_or_next|player_has_item, "itm_tab_shield_round_a"),
      (troop_has_item_equipped,"trp_player","itm_tab_shield_round_a"),
     (troop_remove_item, "trp_player", "itm_tab_shield_round_a"),
     
     (else_try),
     (this_or_next|player_has_item, "itm_wooden_buckler1"),
      (troop_has_item_equipped,"trp_player","itm_wooden_buckler1"),
     (troop_remove_item, "trp_player", "itm_wooden_buckler1"),
      
     (else_try),
     (player_has_item, "itm_bread"),
     (troop_remove_item, "trp_player", "itm_bread"),
      
     (else_try),
     (player_has_item, "itm_cheese"),
     (troop_remove_item, "trp_player", "itm_cheese"),
     (try_end),



      
     (try_begin),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 200),
     (troop_remove_gold,"trp_player",200),     
      
     (else_try),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 150),
     (troop_remove_gold,"trp_player",150),
      
     (else_try),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 100),
     (troop_remove_gold,"trp_player",100),
      
     (else_try),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 80),
     (troop_remove_gold,"trp_player",80),
      
     (else_try),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 60),
     (troop_remove_gold,"trp_player",60),
      
     (else_try),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 40),
     (troop_remove_gold,"trp_player",40),
      
     (else_try),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 20),
     (troop_remove_gold,"trp_player",20),
      
     (else_try),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 10),
     (troop_remove_gold,"trp_player",10),
      
     (else_try),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 5),
     (troop_remove_gold,"trp_player",5),
      
     (else_try),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 3),
     (troop_remove_gold,"trp_player",3),
      
     (else_try),
     (store_troop_gold,":player_gold", "trp_player"),
     (ge, ":player_gold", 1),
     (troop_remove_gold,"trp_player",1),
     (try_end),







     ],

c'est nul,c'est tellement simple a la base  :mrgreen:  :mrgreen:
 
Ou sinon, pour te faire prendre des objets par une party ennemie, tu peux utiliser le script loot_player_items.
Qui donnera les items volés à cette party (si passée en paramètre), ce qui fait que tu pourras les reprendre plus tard, après avoir pris ta revanche.

Mais sinon, oui le script parait correct.
 
Merci,ca passe maintenant  :razz: quand je dit que ca passe,c'est que j'ai testé 200 fois  :mrgreen:

etrange,un truc si simple pourtant  :roll:

Edit:ha! au fait,j'ai un bug herité d'HYW,c'est qu'on a pas de malus de relation ,ni de lord enemie qui nous intercepte si on pille un village...

une idée d'ou ca peut etre le bloc de cette situation ? j'y jeterais un oeil si possible,merci  :grin:
 
merci,mon imensse liste de trucs a regler,deviens une petite liste  :mrgreen:

je vais voire ca.

EDIT:hmmm...tout es en place dans ce fichier,comme native,bizare  :roll:



      ______________________________________________________



bOuYA_k-hlO j'ai une demande de code enorme pour toi  :smile: loing de moi l'idée de profiter de toi,mais si tu peut me faire gagner du temp tout en amusant....ben en tout cas je m'eclate a retexturer les modèles d'AI_mansur,j'ose esperer que ca t'exite de coder mes scenes et situations  :mrgreen:

rapidement je t'expose l'escenssiel:

1-une faction et une troupe partie template (c'est en place) mercenaires

2-dans un quartier de ville (accessible depuis le menu town de la ville,c'est en place) une caserne de mercenaires avec des pnj de cette faction

screens
pour l'anegdote,c'est a Bourges le quartier,ville du dauphin Charle VII...


3- la faction "mercenaire" qui patrouille autour de la ville es pro francais (faction qui a la ville de depart kingdom_1)
je voudrais coder en sorte que si la ville tombe aux mains d'une autre faction

angleterre kingdom_2
bourgogne kingdom_3

Cette faction et partie template tourne en relation positive avec le proprio de la ville et si c'est:

bourgignon=relation en moin pour la france et 0 ou + 5 avec l'angleterre
anglais=relation en moin pour la france et 0 ou + 5 avec la bourgogne

(car cette troupe de mercenaires qui a une caserne dans cette ville travaillerais pour son possesseur....)

comment me consseillerais tu de coder ca ,sachant que ca represente une ou deux lignes  :smile: et a ton avis il ne faudrais pas simplement coder des relation avec la ville ou plutot son possesseur actuel ?

MERCI  :grin:

edit:vite fait comme ca,j'en pensse qu'il faudrais faire les factions mercenaire 1:amie avec la france/enemie anglais...mercenaire_2 ,le faction tourne en enemie france /amie anglais...

et faire le changement de faction pour eux...ect,bon je me met sur autre chose,ca serais formidable si tu voulais pondre une idée de code,sinon je le fait plus tard  :eek:



_____________________________________




bon je ballance mes demandes de codes  :mrgreen:

comment pourais t'on ecrire la condition si un pnj precis a 50% de santé en moin ?

merci!

sinon,c'est magnifique ce que j'ai fait a la caserne,les towns walkers passent devant la caserne/deux soldats s'entrainenet entre eux a l'épée,et l'instructeur se bat avec nous sans se soucier des autres flags  :eek:


_____________________________________


edit:bon je met mes demandes de codes entre les lignes,comme ca si quelqu'un a envie de faire avancer le mod en donnant une des reponsses,c'est bienvenue  :eek:

cette fois c'est comment coder : il faut detruire trois manequins en paille avant un temp imparti...si c'est bon une variable es donnée a 1 si c'est pas bon elle es donnée a -1...allez c'est pas tres dur pour un coder,et moi j'ai trois millions de codes a faire alors ca m'avancerais bien  :wink:
 
后退
顶部 底部