WB [M] Medieval Battles & Sieges

正在查看此主题的用户

Épée pour les Templiers (unité spéciale de la France de la 1ère période) :
DwpJ.jpg

Malheureusement j'ai quelques soucis concernant les dimensions: lorsque je donne des dimensions fidèles à la réalité aux épées (en me basant sur les références d'Albion Swords par exemple), elles paraissent extrêmement petites dans le jeu. Je posterai des screens. C'est très emmerdant.
 
Belle piéce, et ben copie la et rescale en agrandissant un peut, tout en positionant au mieux le manche de l'épée agrandie par apport a la copie restée tel qu'elle ou meme par apport a un manche d'une épée native.(qui sera bien placée dans la main).aprés faut juste regler l'allonge de l'arme a module item...

L'ecenssiel es que les proportions de l'épée elles meme soeint réspectées...puis dans native, tout n'es pas pile a l'echélle, regarde un town walker passer devans une porte géante de swadian house pour te rendre compte  :???:
 
J'ai justement modelé l'épée avec l'échelle du jeu. Voilà une de plus d'un mètre de long qui pourtant paraît très petite/fine dans le jeu:
1350730065-templar.jpg

La référence:
http://www.albion-europe.com/swords/swords-by-time-period/medieval/model.aspx?model=66
 
:shock: si j'avais su, j'aurais acheté mes épées sur ce site, elle sont parfaites  :roll:

Et bien, dans tous les cas, rescale ton épée  :mrgreen: meme a 120 % elle tiendra toujours bien dans la main ,et elle sera un peut plus présente, aprés, ca semble etre bon, une épée 1 main c'est comme une longue dague  :mrgreen: ca dépend des modèles.

openBrf/roto_translate_rescale...et peut etre faire un fil d'éguisage sur la texture de la lame,simplement plus clair et sur la texture de specular je verais bien le fil tranchant trés blanc/brillant  :razz:...
 
Etant perfectionniste et très porté sur le réalisme des proportions, je peux pas augmenter l'échelle comme ça, d'un coup. Il va falloir que je réfléchisse longuement.
 
Hum, la réponsse de la forge ici, en francais et maintenant  :lol:

bien que ca aurais été un débat interéssant vue l'affluance sur le forum english, mais mon anglais ne me permet pas de déveloper ...


FantasyWarrior 说:
Your sword is perfect  :wink:

one handed sword

H6yGO.jpg

Ucd7k.jpg

long sword & bastard sword

FX6U6.jpg

T H sword

sHoFx.jpg


i think, templar is a one handed sword  :roll:

Al_Mansur 说:
This new problem prevents me to go on modding, this is too much for a damned perfectionnist like me

:???:


Al_Mansur 说:
Thanks a lot for these photos, it helps me a lot.


Je pensse qu'on es tous pareils, on es perfectioniste, moi meme je fait un pack de texture pendant 3 mois, et je passe aux codes, en codant je me rend compte que 70% de mes textures pouraient etre mieux, ouais bon, je les refais et aprés je me remet aux codes, en fesans les textues et en les regardant in game je me rend compte que certains de mes scripts pouraient etre plus riches...

A un moment, je dit basta! et je ne regarde plus  :mrgreen: car au fond c'est plus que corect, il faut simplement ne plus regarder et passer a la suite, puis quand on retrouvera ces trucs dans la partie ca ne nous genera plus car on sera dans l'optique de jouer, pas de construire, et au fond ces trucs sont pas dégeux du tout, a l'image de ton épée parfaitement réalisée avec une grande perfection...


ps: je ne sais pas ou tu en es avec tes codes pour faire tirer les cannons et faire tomber les murs, mais il se pourais que j'es une grosse piste pour ca, a condition que tu veuille te servire des canons pour faire tomber les murs /les tours/des arbres et pas tirer sur les copains...je dévelope plus tard, mais je crois que j'es tout  :eek:

Je pourais te filer les codes en gros et les emplacements dans les fichiers, et tu poura les faire affiner par un des boss de la forge, car c'est tres intéressant et atirant comme situation pour un coder.
 
@ Fantasy, donc pour revenir au système d'impact et de destruction, voilà ce que j'ai imaginé:

Le schéma ci dessous représente l'impact d'un projectile (B) sur une courtine (A). Si le prop touché est destructible, alors il perd des points de vie. Si c'est un joueur, il meurt sur le coup (si il reçoit le projectile dans la tête, elle éclate). En plus de ces dégâts directement causés par l'impact vient s'ajouter un périmètre d'impact (en rouge - si l'objet touché est un prop ou le sol), c'est à dire une zone de dégâts collatéraux dans laquelle tout objet destructible (joueur, prop, etc.) reçoit un certain nombre de dégâts (dépendant, tout comme la taille du périmètre, du projectile; boulet de bombarde, de veuglaire, de trébuchet, etc.). Ici en l’occurrence, le personnage 1 perd des points de vie, étant situé dans le périmètre d'impact. Le personnage 2 quant à lui n'est pas affecté par l'impact, étant en dehors du périmètre. Tous les joueurs inclus dans le périmètre de dégâts sans mourir pour autant seront projetés au sol.
1341585582-impact.jpg

La protection dépend en conséquence en grande partie de l'épaisseur du mur atteint. Si ce dernier est assez épais, alors le joueur est en sécurité, comme illustré ci dessous
1341585973-impact2.jpg

Voici maintenant le système de destruction des courtines. En 1 l'élévation de base, en 2 l'élévation schématique laissant apparaître les différents props composant la courtine, chacun étant destructible, et en 3 la coupe permettant de voir l’agencement de ces derniers. Lorsque la partie 2 s'effondre, elle laisse apparaître la partie 3 alors à son tour exposée aux projectiles, et ainsi de suite. Cependant, les merlons (1) posent un problème. En effet, si la partie 2 est détruite avant eux, ce qui est fort probable vu les surfaces respectives, ils flotteraient dans l'air, ce qui serait ridicule. Afin de remédier à ce problème, la meilleure idée que me soit venue à l'esprit est d'étendre leur corps de collision jusqu'en bas de la courtine et de le rendre légèrement proéminent. De cette manière, les merlons seraient toujours les premiers props à être détruits. Malheureusement cela causera des scènes ridicules même si seule la base de la courtine est atteinte par les projectiles, son couronnement de merlons sautera en premier. Donc si vous avez une meilleure solution, je vous écoute.
1346456464-destruction1.jpg

C'était le côté technique, passons à présent au côté visuel/esthétique.
Un impact sur un joueur (pas de périmètre de dégâts dans ce cas je rappelle) causera un "nuage de sang", et si le projectile heurte la tête, un éclatement de celle ci matérialisée par une disparition de la meshe de tête et un nuage de sang accompagné de macabres éclats (un effet façon Chivalry: Age of Warfare serait parfait). Quant aux joueurs projetés au sol car inclus dans le périmètre d'impact sans mourir pour autant, l'animation du personnage renversé par le cheval leur ira très bien.

L'impact sur prop causera un nuage de poussière (dont la couleur sera adaptée au matériau du prop: rougeâtre pour la brique, jaunâtre pour certains types de pierres, brunâtre pour le bois, etc.) accompagné de débris tombants et/ou éclats (selon le matériau). Dans une certaine mesure, cet effet est aussi une matérialisation du périmètre d'impact. Lorsque le projectile heurtera le sol, on verra un nuage de particule brunâtre ainsi que de la terre retombant. Dans l'eau, ce sera un grand "plouf" (mais sans périmètre de dégâts).
Problème: l'effet visuel dépendant de l'objet touché et non du projectile, l'effet sera toujours le même, que l'impact soit causé par un boulet d'une petite veuglaire ou par celui d'une bombarde géante de calibre 80cm. J'espère qu'il est possible d'ajouter un effet d'impact venant du projectile lui même, afin de remédier à ce petit problème.

La destruction d'un prop sera caractérisé par une disparition de celui ci et entraînera le même effet qu'un impact (poussière + débris/éclats), mais cette fois ci adapté aux dimensions du prop.
 
Tu vas faire un script pour gérer la trajectorie courbe des projectiles ?
Je ne suis pas un génie de l'architecture, mais ce serait pas pratique de faire un système "tout ce qui est au-dessus du pan touché est détruit" ? En rélaité, que se passerait-il si le bloc 5 saute en premier ?
 
Oui j'aimerai avoir ce genre de script. Je pense même que c'est indispensable.
Sinon, le bloc 5 ne peut pas sauter en premier car il est caché/protégé par les autres (4, 3 et 2, et éventuellement par le mesh de collision frontal des merlons). C'est comme une poupée russe. Ceci dit, même si il était détruit en premier, cela ne serait pas très grave (pas d'effet visuel irréaliste), et ne ferait que réserver aux défenseurs de la courtine une chute vertigineuse lorsque leur bloc s'effondrera.
 
Ben ça endommagerait la structure, éventuellement provoquerait son effondrement. Mais je ne vois pas trop le rapport avec le jeu :razz:
 
Oui mais il faut prendre en compte mes faibles compétences en scriptage ainsi que le moteur limité du jeu :wink:
 
:mrgreen:

Ok, il faut revoire les objectifs a la baisse, dans un premier temp je proposais des cannons fixes qui visaient une muraille pour la faire tomber (éventuellement si un soldat es a coté de l'impact il subirais les 500 points de dégats)

mais c'est surtout le mur qu'on vise pour l'éfondrer et pour pouvoire entrer, ce qui es possible de faire sans trop de difficulté, c'est une fois que le mur es a 0 en point de vie que les disons 5 parties s'efondrent de manière assez réaliste avec les joueurs dessus en perdant des points de vie a cause de la chutte (mais pas de dégat de zonne pour des petites parties de mur) :???: quois que...mais ca rend la tache encore plus dure.

Et oui, des fumées et eclats de différentes natures et couleures sont possibles...

En fait, j'avais commencé a faire ca (pas de panique, j'éxplique aprés) :



scene prop

插入代码块:
   ("bombarde_fire",spr_use_time(1),"bombarde","bo_bombarde", [
   (ti_on_scene_prop_use,
    [
      (store_trigger_param_1, ":agent_id"),
      (store_trigger_param_2, ":instance_id"),
      #Use this for the server-----------------------------------------------------------------------------------------------
      (call_script, "script_use_item", ":instance_id", ":agent_id"),
      #Use this for the server-----------------------------------------------------------------------------------------------
      (get_max_players, ":num_players"),                               
      (try_for_range, ":player_no", 1, ":num_players"), #0 is server so starting from 1
        (player_is_active, ":player_no"),
        (multiplayer_send_2_int_to_player, ":player_no", multiplayer_event_use_item, ":instance_id", ":agent_id"),
      (try_end),
    ]),
  ]),
script 1

插入代码块:
  #script_use_item
  # INPUT: arg1 = agent_id, arg2 = instance_id
  # OUTPUT: none
  ("use_item",
   [
     (store_script_param, ":instance_id", 1),
     (store_script_param, ":user_id", 2),

     (try_begin),
       (game_in_multiplayer_mode),
       (prop_instance_get_scene_prop_kind, ":scene_prop_id", ":instance_id"),
       (eq, ":scene_prop_id", "spr_winch_b"),
                      
       (multiplayer_get_my_player, ":my_player_no"),

       (this_or_next|gt, ":my_player_no", 0),
       (neg|multiplayer_is_dedicated_server),

       (ge, ":my_player_no", 0),
       (player_get_agent_id, ":my_agent_id", ":my_player_no"),
       (ge, ":my_agent_id", 0),
       (agent_is_active, ":my_agent_id"),
       (agent_get_team, ":my_team_no", ":my_agent_id"),
       (eq, ":my_team_no", 0),
                             
       (scene_prop_get_slot, ":opened_or_closed", ":instance_id", scene_prop_open_or_close_slot),
       (ge, ":user_id", 0),
       (agent_is_active, ":user_id"),
       (agent_get_player_id, ":user_player", ":user_id"),
       (str_store_player_username, s7, ":user_player"),
            
       (try_begin),
         (eq, ":opened_or_closed", 0),
         (display_message, "@{s7} opened the gate"),
       (else_try),  
         (display_message, "@{s7} closed the gate"),
       (try_end),
     (try_end),  

     (prop_instance_get_scene_prop_kind, ":scene_prop_id", ":instance_id"),
     
     (try_begin),
       (this_or_next|eq, ":scene_prop_id", "spr_winch_b"),
       (eq, ":scene_prop_id", "spr_winch"),
       (assign, ":effected_object", "spr_portcullis"),
     (else_try),
       (this_or_next|eq, ":scene_prop_id", "spr_door_destructible"),
       (this_or_next|eq, ":scene_prop_id", "spr_castle_f_door_b"),
       (this_or_next|eq, ":scene_prop_id", "spr_castle_e_sally_door_a"),
       (this_or_next|eq, ":scene_prop_id", "spr_castle_f_sally_door_a"),
       (this_or_next|eq, ":scene_prop_id", "spr_earth_sally_gate_left"),
       (this_or_next|eq, ":scene_prop_id", "spr_earth_sally_gate_right"),
       (this_or_next|eq, ":scene_prop_id", "spr_viking_keep_destroy_sally_door_left"),
       (this_or_next|eq, ":scene_prop_id", "spr_viking_keep_destroy_sally_door_right"),
       (this_or_next|eq, ":scene_prop_id", "spr_castle_f_door_a"),
       (this_or_next|eq, ":scene_prop_id", "spr_siege_ladder_move_6m"),
       (this_or_next|eq, ":scene_prop_id", "spr_siege_ladder_move_8m"),
       (this_or_next|eq, ":scene_prop_id", "spr_siege_ladder_move_10m"),
       (this_or_next|eq, ":scene_prop_id", "spr_siege_ladder_move_12m"),
       (eq, ":scene_prop_id", "spr_siege_ladder_move_14m"),
       (assign, ":effected_object", ":scene_prop_id"),
     (try_end),

     (assign, ":smallest_dist", -1),
     (prop_instance_get_position, pos0, ":instance_id"),
     (scene_prop_get_num_instances, ":num_instances_of_effected_object", ":effected_object"),     
     (try_for_range, ":cur_instance", 0, ":num_instances_of_effected_object"),
       (scene_prop_get_instance, ":cur_instance_id", ":effected_object", ":cur_instance"),
       (prop_instance_get_position, pos1, ":cur_instance_id"),
       (get_sq_distance_between_positions, ":dist", pos0, pos1),
       (this_or_next|eq, ":smallest_dist", -1),
       (lt, ":dist", ":smallest_dist"),
       (assign, ":smallest_dist", ":dist"),
       (assign, ":effected_object_instance_id", ":cur_instance_id"),
     (try_end),

     (try_begin),
       (ge, ":instance_id", 0),
       (ge, ":smallest_dist", 0),

       (try_begin),     
         (eq, ":effected_object", "spr_portcullis"),
         (scene_prop_get_slot, ":opened_or_closed", ":instance_id", scene_prop_open_or_close_slot),

         (try_begin),
           (eq, ":opened_or_closed", 0), #open gate
     
           (scene_prop_enable_after_time, ":instance_id", 400), #4 seconds
           (try_begin),
             (this_or_next|multiplayer_is_server),
             (neg|game_in_multiplayer_mode),
             (prop_instance_get_position, pos0, ":effected_object_instance_id"),
             (position_move_z, pos0, 375),
             (prop_instance_animate_to_position, ":effected_object_instance_id", pos0, 400),
           (try_end),
           (scene_prop_set_slot, ":instance_id", scene_prop_open_or_close_slot, 1),

           (try_begin),
             (eq, ":scene_prop_id", "spr_winch_b"),
             (this_or_next|multiplayer_is_server),
             (neg|game_in_multiplayer_mode),
             (prop_instance_get_position, pos1, ":instance_id"),
             (prop_instance_rotate_to_position, ":instance_id", pos1, 400, 72000),
           (try_end),
         (else_try), #close gate     
           (scene_prop_enable_after_time, ":instance_id", 400), #4 seconds
           (try_begin),
             (this_or_next|multiplayer_is_server),
             (neg|game_in_multiplayer_mode),
             (prop_instance_get_position, pos0, ":effected_object_instance_id"),
             (position_move_z, pos0, -375),
             (prop_instance_animate_to_position, ":effected_object_instance_id", pos0, 400),
           (try_end),
           (scene_prop_set_slot, ":instance_id", scene_prop_open_or_close_slot, 0),

           (try_begin),
             (eq, ":scene_prop_id", "spr_winch_b"),
             (this_or_next|multiplayer_is_server),
             (neg|game_in_multiplayer_mode),
             (prop_instance_get_position, pos1, ":instance_id"),
             (prop_instance_rotate_to_position, ":instance_id", pos1, 400, -72000),
           (try_end),
         (try_end),
       (else_try),
         (this_or_next|eq, ":effected_object", "spr_siege_ladder_move_6m"),
         (this_or_next|eq, ":effected_object", "spr_siege_ladder_move_8m"),
         (this_or_next|eq, ":effected_object", "spr_siege_ladder_move_10m"),
         (this_or_next|eq, ":effected_object", "spr_siege_ladder_move_12m"),
         (eq, ":effected_object", "spr_siege_ladder_move_14m"),

         (try_begin),
           (eq, ":effected_object", "spr_siege_ladder_move_6m"),
           (assign, ":animation_time_drop", 120),
           (assign, ":animation_time_elevate", 240),
         (else_try),
           (eq, ":effected_object", "spr_siege_ladder_move_8m"),
           (assign, ":animation_time_drop", 140),
           (assign, ":animation_time_elevate", 280),
         (else_try),
           (eq, ":effected_object", "spr_siege_ladder_move_10m"),
           (assign, ":animation_time_drop", 160),
           (assign, ":animation_time_elevate", 320),
         (else_try),
           (eq, ":effected_object", "spr_siege_ladder_move_12m"),
           (assign, ":animation_time_drop", 190),
           (assign, ":animation_time_elevate", 360),
         (else_try),
           (eq, ":effected_object", "spr_siege_ladder_move_14m"),
           (assign, ":animation_time_drop", 230),
           (assign, ":animation_time_elevate", 400),
         (try_end),
     
         (scene_prop_get_slot, ":opened_or_closed", ":instance_id", scene_prop_open_or_close_slot),

         (try_begin),
           (scene_prop_enable_after_time, ":effected_object_instance_id", ":animation_time_elevate"), #3 seconds in average
           (eq, ":opened_or_closed", 0), #ladder at ground           
           (prop_instance_get_starting_position, pos0, ":effected_object_instance_id"),
           (prop_instance_enable_physics, ":effected_object_instance_id", 0),
           (prop_instance_animate_to_position, ":effected_object_instance_id", pos0, 300),
           (scene_prop_set_slot, ":effected_object_instance_id", scene_prop_open_or_close_slot, 1), 
         (else_try), #ladder at wall
           (scene_prop_enable_after_time, ":effected_object_instance_id", ":animation_time_drop"), #1.5 seconds in average
           (prop_instance_get_position, pos0, ":instance_id"),

           (assign, ":smallest_dist", -1),
           (try_for_range, ":entry_point_no", multi_entry_points_for_usable_items_start, multi_entry_points_for_usable_items_end),
             (entry_point_get_position, pos1, ":entry_point_no"),
             (get_sq_distance_between_positions, ":dist", pos0, pos1),
             (this_or_next|eq, ":smallest_dist", -1),
             (lt, ":dist", ":smallest_dist"),
             (assign, ":smallest_dist", ":dist"),
             (assign, ":nearest_entry_point", ":entry_point_no"),
           (try_end),

           (try_begin),
             (ge, ":smallest_dist", 0),
             (lt, ":smallest_dist", 22500), #max 15m distance
             (entry_point_get_position, pos1, ":nearest_entry_point"),
             (position_rotate_x, pos1, -90),
             (scene_prop_set_slot, ":effected_object_instance_id", scene_prop_smoke_effect_done, 0),
             (prop_instance_enable_physics, ":effected_object_instance_id", 0),
             (prop_instance_animate_to_position, ":effected_object_instance_id", pos1, 130),
           (try_end),

           (scene_prop_set_slot, ":effected_object_instance_id", scene_prop_open_or_close_slot, 0),
         (try_end),
       (else_try),
         (this_or_next|eq, ":effected_object", "spr_door_destructible"),
         (this_or_next|eq, ":effected_object", "spr_castle_f_door_b"),
         (this_or_next|eq, ":scene_prop_id", "spr_castle_e_sally_door_a"),     
         (this_or_next|eq, ":scene_prop_id", "spr_castle_f_sally_door_a"),     
         (this_or_next|eq, ":scene_prop_id", "spr_earth_sally_gate_left"),     
         (this_or_next|eq, ":scene_prop_id", "spr_earth_sally_gate_right"),     
         (this_or_next|eq, ":scene_prop_id", "spr_viking_keep_destroy_sally_door_left"),     
         (this_or_next|eq, ":scene_prop_id", "spr_viking_keep_destroy_sally_door_right"),     
         (eq, ":scene_prop_id", "spr_castle_f_door_a"),
     
         (assign, ":effected_object_instance_id", ":instance_id"),
         (scene_prop_get_slot, ":opened_or_closed", ":effected_object_instance_id", scene_prop_open_or_close_slot),

         (try_begin),
           (eq, ":opened_or_closed", 0),

           (prop_instance_get_starting_position, pos0, ":effected_object_instance_id"),

           (scene_prop_enable_after_time, ":effected_object_instance_id", 100),

           (try_begin),
             (neg|eq, ":scene_prop_id", "spr_viking_keep_destroy_sally_door_left"),
             (neg|eq, ":scene_prop_id", "spr_earth_sally_gate_left"),
             
             (position_rotate_z, pos0, -85),
           (else_try),  
             (position_rotate_z, pos0, 85),
           (try_end),
           
           (prop_instance_animate_to_position, ":effected_object_instance_id", pos0, 100),
          
           (scene_prop_set_slot, ":effected_object_instance_id", scene_prop_open_or_close_slot, 1),
         (else_try),          
           (prop_instance_get_starting_position, pos0, ":effected_object_instance_id"),

           (scene_prop_enable_after_time, ":effected_object_instance_id", 100),

           (prop_instance_animate_to_position, ":effected_object_instance_id", pos0, 100),

           (scene_prop_set_slot, ":effected_object_instance_id", scene_prop_open_or_close_slot, 0),
         (try_end),
       (try_end),
     (try_end),
################### bombarde begin
         (try_begin),
           (eq, ":scene_prop_id", "spr_bombarde_fire"),
            #     (multiplayer_is_server),
           (play_sound,"snd_boum_bombard"),

         #  ...particles...kill pnj...

         (try_end),

################### bombarde end
     
     ]),



script 2


插入代码块:
  #script_game_get_use_string
  # This script is called from the game engine for getting using information text
  # INPUT: used_scene_prop_id  
  # OUTPUT: s0
  ("game_get_use_string",
   [
     (store_script_param, ":instance_id", 1),

     (prop_instance_get_scene_prop_kind, ":scene_prop_id", ":instance_id"),
     
     (try_begin),
       (this_or_next|eq, ":scene_prop_id", "spr_winch_b"),
       (eq, ":scene_prop_id", "spr_winch"),
       (assign, ":effected_object", "spr_portcullis"),
     (else_try),
       (this_or_next|eq, ":scene_prop_id", "spr_door_destructible"),
       (this_or_next|eq, ":scene_prop_id", "spr_castle_f_door_b"),
       (this_or_next|eq, ":scene_prop_id", "spr_castle_e_sally_door_a"),
       (this_or_next|eq, ":scene_prop_id", "spr_castle_f_sally_door_a"),
       (this_or_next|eq, ":scene_prop_id", "spr_earth_sally_gate_left"),
       (this_or_next|eq, ":scene_prop_id", "spr_earth_sally_gate_right"),
       (this_or_next|eq, ":scene_prop_id", "spr_viking_keep_destroy_sally_door_left"),
       (this_or_next|eq, ":scene_prop_id", "spr_viking_keep_destroy_sally_door_right"),
       (this_or_next|eq, ":scene_prop_id", "spr_castle_f_door_a"),
       (this_or_next|eq, ":scene_prop_id", "spr_siege_ladder_move_6m"),
       (this_or_next|eq, ":scene_prop_id", "spr_siege_ladder_move_8m"),
       (this_or_next|eq, ":scene_prop_id", "spr_siege_ladder_move_10m"),
       (this_or_next|eq, ":scene_prop_id", "spr_siege_ladder_move_12m"),
       (this_or_next|eq, ":scene_prop_id", "spr_monsmeg_fire"),
     
       (eq, ":scene_prop_id", "spr_siege_ladder_move_14m"),
       (assign, ":effected_object", ":scene_prop_id"),
     (try_end),   

     (scene_prop_get_slot, ":item_situation", ":instance_id", scene_prop_open_or_close_slot),
   
     (try_begin), #opening/closing portcullis
       (eq, ":effected_object", "spr_portcullis"),

       (try_begin),
         (eq, ":item_situation", 0),
         (str_store_string, s0, "str_open_gate"),
       (else_try), 
         (str_store_string, s0, "str_close_gate"),
       (try_end),
     (else_try), #opening/closing door
       (this_or_next|eq, ":effected_object", "spr_door_destructible"),
       (this_or_next|eq, ":effected_object", "spr_castle_f_door_b"),
       (this_or_next|eq, ":effected_object", "spr_castle_e_sally_door_a"),
       (this_or_next|eq, ":effected_object", "spr_castle_f_sally_door_a"),
       (this_or_next|eq, ":effected_object", "spr_earth_sally_gate_left"),
       (this_or_next|eq, ":effected_object", "spr_earth_sally_gate_right"),
       (this_or_next|eq, ":effected_object", "spr_viking_keep_destroy_sally_door_left"),
       (this_or_next|eq, ":effected_object", "spr_viking_keep_destroy_sally_door_right"),
       (eq, ":effected_object", "spr_castle_f_door_a"),

       (try_begin),
         (eq, ":item_situation", 0),
         (str_store_string, s0, "str_open_door"),
       (else_try),
         (str_store_string, s0, "str_close_door"),
       (try_end),


#################    bombarde begin
     (try_begin),
       (eq, ":scene_prop_id", "spr_bombarde_fire"),
       (assign, ":effected_object", "spr_bombarde_fire"),
       (str_store_string, s0, "str_bomb_fire"),
	(try_end),  
################# bombarde end

     

     (else_try), #raising/dropping ladder
       (try_begin),
         (eq, ":item_situation", 0),
         (str_store_string, s0, "str_raise_ladder"),
       (else_try),
         (str_store_string, s0, "str_drop_ladder"),
       (try_end),
     (try_end),
   ]),

Ce qui es censsé ajouter un prop de base bombarde, avec une fenetre d'action "tirer" press F, et requiert d'autres scripts pour faire des dégats de zonne ou sur les batiments, seulement voila ca ne marche que pour le multi, j'ai donc due abondonner cette voie pour mon mod solo, (il es possible de le faire marcher en solo ,mais il faut ajouter une ligne au module ini, qui ne marchera qu'en 1.152, hors moi je travaille sur la V.134.je ne peut donc pas aider par apport a ca, a moin que je me penche sur le mod en multi justement.

mais pour mon mod,j'ai trouvé un moyen de substitution qui fonctionne, mais c'est assez scripté, des cannons fixes, des particules qui apparaissent au moment du tir a l'emplacement du cannon quand on tire, un mur qui perd des point de vie au meme moment...

la question es: faut il prendre mon idée et mes scripts (fait avec Bouyha_k_lho) et faire des cannons fixes et dégats aux joueurs juste si ils passent a coté et au moment de l'impact , ou faut t'il que quelqu'un reprenne mes scripts prevues pour le multi qui permeterons une autre aproche, comme diriger le cannon, tirer directement sur les joueurs ?  :roll:


je propose donc, les joeurs sont spawnés au bord de la carte et doivent atteindre les cannon, et tirer 10 fois on va dire pour faire tomber un mur et pouvoir passer...ma soluc pour mon mod solo en ajoutant le script du mur qui chutte quand il es a 0.

ce qui me demande de m'ecarter de mon md quelques heures/ jours pour adapter et donner les codes, mais pas plus  :???:
 
Bha Al_Mansur, j'ai vue ton post et voulais répondre, mais je suis ultra débordé c'est un truc de malade  :???:
Mais tu sais bien ce que je pensse de tes modèles  :wink:
tu es pour moi le meilleur modeleur, le plus consciencieux, le plus réaliste...et personne n'as fait autan de modèle aussi utilisés que les tiens  :wink:

de plus c'est déserté ,meme le forum english es pas super actif alors...

Ils sont parfaits  :wink: pour le dernier screen, c'est de l'iron shader ? je detéste l'iron shader et l'environ map un truc comme ca  :???:

c'est vraiment mieux le bump et specular pour les armures en tout cas, meme si ca ratoute deux textures.
 
Al_Mansur 说:
Tout le monde s'en fout par ici ?
Je vois tout mais commente rarement, je n'ai pas de grandes connaissances sur l'époque médiévale donc je ne peut commenter beaucoup sur le sujet. A part bien sur que tout est magnifique jusqu’à maintenant. Surtout l'architecture.
 
Al_Mansur 说:
Tout le monde s'en fout par ici ?
ça fait peur, hein?
Normal pour un 31 octobre me diras-tu...
T'inquiète, je trouve tes mamelouks très réussis également, le truc c'est qu'on n'a pas toujours le réflexe de l'écrire et c'est vrai qu'un petit message motive toujours un peu. Bon là on est au moins quatre à apprécier ton travail. (ce qui est presque le nombre d'actifs du moment)  :wink:
 
后退
顶部 底部