1
Вопросы и ответы по модостроению / Удар щитом
« : 12 Февраля, 2011, 11:10 »
Хотел установить удар щитом для варбанда вот код но когда етот код вставил то модулька выдает ошибки,в чем дело? может есть какой то другой код для удара щитом?
("cf_agent_shield_bash",
[(store_script_param, ":agent",1),
(agent_get_position,pos1,":agent"),
(agent_set_animation, ":agent", "anim_release_bash"),
(agent_play_sound,":agent","snd_man_grunt"),
(assign,":victim",-1),
(try_for_agents,":possible_victim"),
(agent_is_alive,":possible_victim"),
(agent_is_human,":possible_victim"),
(neq,":possible_victim",":agent"),
(agent_get_class ,":class", ":possible_victim"),
(neq,":class",grc_cavalry),
(agent_get_position,pos2,":possible_victim"),
(get_distance_between_positions,":dist",pos1,pos2),
(lt,":dist",150),
(neg|position_is_behind_position,pos2,pos1),
(assign,":victim",":possible_victim"),
(end_try),
(gt,":victim",-1),
(store_random_in_range,":rand",0,2),
(store_agent_hit_points,":hp",":victim",1),
(val_sub,":hp",":rand"),
(store_random_in_range,":hit_reaction",1,101),
(store_skill_level,":a_shield",skl_shield,":victim"),
(store_skill_level,":v_shield",skl_shield,":agent"),
(try_begin),
(gt,":hp",0),
(agent_set_hit_points,":victim",":hp",1),
(agent_play_sound,":agent","snd_shield_hit_wood_wood"),
(agent_play_sound,":victim","snd_blunt_hit"),
(try_begin),
(gt,":a_shield", ":v_shield"),
(try_begin),
(is_between,":hit_reaction",0,10),
(agent_set_animation, ":victim", "anim_bash_unsuccessful"),
(else_try),
(is_between,":hit_reaction",11,20),
(agent_set_animation, ":victim", "anim_bash_crouch"),
(else_try),
(is_between,":hit_reaction",21,30),
(agent_set_animation, ":victim", "anim_bash_mini_stun"),
(else_try),
(is_between,":hit_reaction",21,79),
(agent_set_animation, ":victim", "anim_bash_stun"),
(else_try),
(is_between,":hit_reaction",80,100),
(agent_set_animation, ":victim", "anim_bash_knocked"),
(end_try),
(else_try),
(lt,":a_shield", ":v_shield"),
(try_begin),
(is_between,":hit_reaction",0,20),
(agent_set_animation, ":victim", "anim_bash_unsuccessful"),
(else_try),
(is_between,":hit_reaction",21,42),
(agent_set_animation, ":victim", "anim_bash_crouch"),
(else_try),
(is_between,":hit_reaction",43,65),
(agent_set_animation, ":victim", "anim_bash_mini_stun"),
(else_try),
(is_between,":hit_reaction",66,92),
(agent_set_animation, ":victim", "anim_bash_stun"),
(else_try),
(is_between,":hit_reaction",93,100),
(agent_set_animation, ":victim", "anim_bash_knocked"),
(end_try),
(else_try),
(eq,":a_shield", ":v_shield"),
(try_begin),
(is_between,":hit_reaction",0,16),
(agent_set_animation, ":victim", "anim_bash_unsuccessful"),
(else_try),
(is_between,":hit_reaction",17,33),
(agent_set_animation, ":victim", "anim_bash_crouch"),
(else_try),
(is_between,":hit_reaction",34,50),
(agent_set_animation, ":victim", "anim_bash_mini_stun"),
(else_try),
(is_between,":hit_reaction",51,89),
(agent_set_animation, ":victim", "anim_bash_stun"),
(else_try),
(is_between,":hit_reaction",90,100),
(agent_set_animation, ":victim", "anim_bash_knocked"),
(end_try),
(end_try),
(else_try),
(agent_play_sound,":agent","snd_shield_hit_wood_wood"),
(agent_play_sound,":victim","snd_blunt_hit"),
(agent_deliver_damage_to_agent,":agent",":victim"),
(end_try),
]),
The following into any applicable mission template:
(ti_before_mission_start, 0, 0, [], [(assign,"$bash_readiness",0)]),
(0.1, 0, 0, [], [(val_add,"$bash_readiness",1),]),
(0, 0, 0, [(game_key_is_down, gk_defend),(game_key_clicked, gk_attack),],
[(assign,":continue",0),
(get_player_agent_no,":player"),
(agent_is_alive,":player"),
(try_for_range,":shield","itm_wooden_shield","itm_heraldic_mail_with_surcoat"),
(agent_has_item_equipped,":player",":shield"),
(assign,":continue",1),
(end_try),
(eq,":continue",1),
(agent_get_horse,":horse",":player"),
(neg|gt,":horse",0),
(ge,"$bash_readiness",10),
(assign,"$bash_readiness",0),
(call_script,"script_cf_agent_shield_bash",":player"),
]),
(1.0, 0, 0, [],
[(get_player_agent_no,":player"),
(try_for_agents,":agent"),
(agent_is_alive,":agent"),
(agent_is_human,":agent"),
(neq,":agent",":player"),
(agent_get_class ,":class", ":agent"),
(neq,":class",grc_cavalry),
(assign,":continue",0),
(try_for_range,":shield","itm_wooden_shield","itm_heraldic_mail_with_surcoat"),
(agent_has_item_equipped,":agent",":shield"),
(assign,":continue",1),
(end_try),
(eq,":continue",1),
(assign,":chances",0),
(agent_get_team,":team",":agent"),
(agent_get_position,pos1,":agent"),
(try_for_agents,":other"),
(agent_is_alive,":other"),
(agent_is_human,":other"),
(agent_get_class ,":class", ":other"),
(neq,":class",grc_cavalry),
(agent_get_team,":otherteam",":other"),
(neq,":team",":otherteam"),
(agent_get_position,pos2,":other"),
(get_distance_between_positions,":dist",pos1,pos2),
(neg|position_is_behind_position,pos2,pos1),
(lt,":dist",200),
(val_add,":chances",1),
(end_try),
(store_agent_hit_points,":health",":agent",0),
(val_mul,":health",-1),
(val_add,":health",100),
(val_div,":health",10),
(val_mul,":chances",":health"),
(store_random_in_range,":rand",1,25),
(lt,":rand",":chances"),
(call_script,"script_cf_agent_shield_bash",":agent"),
(end_try),]),
And the following into module animations (note that these must be pasted over unused animations, not at the end of the file):
# strike_fall_back_rise_after_bashed
["bash_knocked", acf_enforce_all|acf_align_with_ground,
[2.0, "anim_human", blow+5400, blow+5453, arf_blend_in_2],
],
# strike_chest_front_stop
["bash_stun", acf_enforce_all,
[1.5, "anim_human", blow+5000, blow+5010, arf_blend_in_3],
],
# strike_chest_front_stop
["bash_mini_stun", acf_enforce_all,
[0.6, "anim_human", blow+5000, blow+5010, arf_blend_in_3],
],
# anim jump end
["bash_crouch", acf_enforce_all|acf_enforce_lowerbody,
[0.5, "anim_human", 280, 290, arf_blend_in_3],
],
# strike_head_front_left
["bash_unsuccessful", acf_enforce_all,
[0.55, "anim_human", blow+0, blow+10, arf_blend_in_3],
],
["release_bash", acf_enforce_all|acf_right_cut|acf_parallels_for_look_slope,
[0.62, "anim_human", combat+5710, combat+5740, blend_in_release],
],
[(store_script_param, ":agent",1),
(agent_get_position,pos1,":agent"),
(agent_set_animation, ":agent", "anim_release_bash"),
(agent_play_sound,":agent","snd_man_grunt"),
(assign,":victim",-1),
(try_for_agents,":possible_victim"),
(agent_is_alive,":possible_victim"),
(agent_is_human,":possible_victim"),
(neq,":possible_victim",":agent"),
(agent_get_class ,":class", ":possible_victim"),
(neq,":class",grc_cavalry),
(agent_get_position,pos2,":possible_victim"),
(get_distance_between_positions,":dist",pos1,pos2),
(lt,":dist",150),
(neg|position_is_behind_position,pos2,pos1),
(assign,":victim",":possible_victim"),
(end_try),
(gt,":victim",-1),
(store_random_in_range,":rand",0,2),
(store_agent_hit_points,":hp",":victim",1),
(val_sub,":hp",":rand"),
(store_random_in_range,":hit_reaction",1,101),
(store_skill_level,":a_shield",skl_shield,":victim"),
(store_skill_level,":v_shield",skl_shield,":agent"),
(try_begin),
(gt,":hp",0),
(agent_set_hit_points,":victim",":hp",1),
(agent_play_sound,":agent","snd_shield_hit_wood_wood"),
(agent_play_sound,":victim","snd_blunt_hit"),
(try_begin),
(gt,":a_shield", ":v_shield"),
(try_begin),
(is_between,":hit_reaction",0,10),
(agent_set_animation, ":victim", "anim_bash_unsuccessful"),
(else_try),
(is_between,":hit_reaction",11,20),
(agent_set_animation, ":victim", "anim_bash_crouch"),
(else_try),
(is_between,":hit_reaction",21,30),
(agent_set_animation, ":victim", "anim_bash_mini_stun"),
(else_try),
(is_between,":hit_reaction",21,79),
(agent_set_animation, ":victim", "anim_bash_stun"),
(else_try),
(is_between,":hit_reaction",80,100),
(agent_set_animation, ":victim", "anim_bash_knocked"),
(end_try),
(else_try),
(lt,":a_shield", ":v_shield"),
(try_begin),
(is_between,":hit_reaction",0,20),
(agent_set_animation, ":victim", "anim_bash_unsuccessful"),
(else_try),
(is_between,":hit_reaction",21,42),
(agent_set_animation, ":victim", "anim_bash_crouch"),
(else_try),
(is_between,":hit_reaction",43,65),
(agent_set_animation, ":victim", "anim_bash_mini_stun"),
(else_try),
(is_between,":hit_reaction",66,92),
(agent_set_animation, ":victim", "anim_bash_stun"),
(else_try),
(is_between,":hit_reaction",93,100),
(agent_set_animation, ":victim", "anim_bash_knocked"),
(end_try),
(else_try),
(eq,":a_shield", ":v_shield"),
(try_begin),
(is_between,":hit_reaction",0,16),
(agent_set_animation, ":victim", "anim_bash_unsuccessful"),
(else_try),
(is_between,":hit_reaction",17,33),
(agent_set_animation, ":victim", "anim_bash_crouch"),
(else_try),
(is_between,":hit_reaction",34,50),
(agent_set_animation, ":victim", "anim_bash_mini_stun"),
(else_try),
(is_between,":hit_reaction",51,89),
(agent_set_animation, ":victim", "anim_bash_stun"),
(else_try),
(is_between,":hit_reaction",90,100),
(agent_set_animation, ":victim", "anim_bash_knocked"),
(end_try),
(end_try),
(else_try),
(agent_play_sound,":agent","snd_shield_hit_wood_wood"),
(agent_play_sound,":victim","snd_blunt_hit"),
(agent_deliver_damage_to_agent,":agent",":victim"),
(end_try),
]),
The following into any applicable mission template:
(ti_before_mission_start, 0, 0, [], [(assign,"$bash_readiness",0)]),
(0.1, 0, 0, [], [(val_add,"$bash_readiness",1),]),
(0, 0, 0, [(game_key_is_down, gk_defend),(game_key_clicked, gk_attack),],
[(assign,":continue",0),
(get_player_agent_no,":player"),
(agent_is_alive,":player"),
(try_for_range,":shield","itm_wooden_shield","itm_heraldic_mail_with_surcoat"),
(agent_has_item_equipped,":player",":shield"),
(assign,":continue",1),
(end_try),
(eq,":continue",1),
(agent_get_horse,":horse",":player"),
(neg|gt,":horse",0),
(ge,"$bash_readiness",10),
(assign,"$bash_readiness",0),
(call_script,"script_cf_agent_shield_bash",":player"),
]),
(1.0, 0, 0, [],
[(get_player_agent_no,":player"),
(try_for_agents,":agent"),
(agent_is_alive,":agent"),
(agent_is_human,":agent"),
(neq,":agent",":player"),
(agent_get_class ,":class", ":agent"),
(neq,":class",grc_cavalry),
(assign,":continue",0),
(try_for_range,":shield","itm_wooden_shield","itm_heraldic_mail_with_surcoat"),
(agent_has_item_equipped,":agent",":shield"),
(assign,":continue",1),
(end_try),
(eq,":continue",1),
(assign,":chances",0),
(agent_get_team,":team",":agent"),
(agent_get_position,pos1,":agent"),
(try_for_agents,":other"),
(agent_is_alive,":other"),
(agent_is_human,":other"),
(agent_get_class ,":class", ":other"),
(neq,":class",grc_cavalry),
(agent_get_team,":otherteam",":other"),
(neq,":team",":otherteam"),
(agent_get_position,pos2,":other"),
(get_distance_between_positions,":dist",pos1,pos2),
(neg|position_is_behind_position,pos2,pos1),
(lt,":dist",200),
(val_add,":chances",1),
(end_try),
(store_agent_hit_points,":health",":agent",0),
(val_mul,":health",-1),
(val_add,":health",100),
(val_div,":health",10),
(val_mul,":chances",":health"),
(store_random_in_range,":rand",1,25),
(lt,":rand",":chances"),
(call_script,"script_cf_agent_shield_bash",":agent"),
(end_try),]),
And the following into module animations (note that these must be pasted over unused animations, not at the end of the file):
# strike_fall_back_rise_after_bashed
["bash_knocked", acf_enforce_all|acf_align_with_ground,
[2.0, "anim_human", blow+5400, blow+5453, arf_blend_in_2],
],
# strike_chest_front_stop
["bash_stun", acf_enforce_all,
[1.5, "anim_human", blow+5000, blow+5010, arf_blend_in_3],
],
# strike_chest_front_stop
["bash_mini_stun", acf_enforce_all,
[0.6, "anim_human", blow+5000, blow+5010, arf_blend_in_3],
],
# anim jump end
["bash_crouch", acf_enforce_all|acf_enforce_lowerbody,
[0.5, "anim_human", 280, 290, arf_blend_in_3],
],
# strike_head_front_left
["bash_unsuccessful", acf_enforce_all,
[0.55, "anim_human", blow+0, blow+10, arf_blend_in_3],
],
["release_bash", acf_enforce_all|acf_right_cut|acf_parallels_for_look_slope,
[0.62, "anim_human", combat+5710, combat+5740, blend_in_release],
],
![Непонимающий :blink:](Smileys/smiles2/blink.gif)