("workaround_agent_attack_action",
[
(store_script_param, ":agent_id", 1),
(assign, reg0, 0),
(try_begin),
(agent_is_active, ":agent_id"),
(agent_is_alive, ":agent_id"),
(assign, ":workaround", 0),
(try_begin),#on decicated server
(multiplayer_is_dedicated_server),
(assign, ":workaround", 1),
(else_try),#client side while on decicated server
(game_in_multiplayer_mode),
(neg|multiplayer_is_server),
(assign, ":workaround", 1),
(try_end),
(try_begin),
(eq, ":workaround", 1),
(agent_get_animation, ":anim", ":agent_id", 1),#upper body animation
(try_begin),
(this_or_next|eq, ":anim", "anim_ready_bow"),
(this_or_next|eq, ":anim", "anim_ready_crossbow"),
(this_or_next|eq, ":anim", "anim_ready_javelin"),
(this_or_next|eq, ":anim", "anim_ready_throwing_knife"),
(this_or_next|eq, ":anim", "anim_ready_throwing_axe"),
(this_or_next|eq, ":anim", "anim_ready_stone"),
(this_or_next|eq, ":anim", "anim_ready_pistol"),
(this_or_next|eq, ":anim", "anim_ready_musket"),
(this_or_next|eq, ":anim", "anim_ready_swingright_fist"),
(this_or_next|eq, ":anim", "anim_ready_swingleft_fist"),
(this_or_next|eq, ":anim", "anim_ready_direct_fist"),
(this_or_next|eq, ":anim", "anim_ready_uppercut_fist"),
(this_or_next|eq, ":anim", "anim_ready_slashright_twohanded"),
(this_or_next|eq, ":anim", "anim_ready_slashleft_twohanded"),
(this_or_next|eq, ":anim", "anim_ready_thrust_twohanded"),
(this_or_next|eq, ":anim", "anim_ready_overswing_twohanded"),
(this_or_next|eq, ":anim", "anim_ready_thrust_onehanded"),
(this_or_next|eq, ":anim", "anim_ready_thrust_onehanded_horseback"),
(this_or_next|eq, ":anim", "anim_ready_thrust_onehanded_lance"),
(this_or_next|eq, ":anim", "anim_ready_slashright_onehanded"),
(this_or_next|eq, ":anim", "anim_ready_slashleft_onehanded"),
(this_or_next|eq, ":anim", "anim_ready_overswing_onehanded"),
(this_or_next|eq, ":anim", "anim_ready_slash_horseback_right"),
(this_or_next|eq, ":anim", "anim_ready_slash_horseback_left"),
(this_or_next|eq, ":anim", "anim_ready_slash_horseback_polearm_right"),
(this_or_next|eq, ":anim", "anim_ready_slash_horseback_polearm_left"),
(this_or_next|eq, ":anim", "anim_ready_overswing_staff"),
(this_or_next|eq, ":anim", "anim_ready_thrust_staff"),
(this_or_next|eq, ":anim", "anim_ready_slashleft_staff"),
(this_or_next|eq, ":anim", "anim_ready_slashright_staff"),
(this_or_next|eq, ":anim", "anim_crouch_ready_pistol"),
(this_or_next|eq, ":anim", "anim_ready_overswing_spear"),
(this_or_next|eq, ":anim", "anim_ready_overswing_musket"),
(eq, ":anim", "anim_ready_thrust_musket"),
(assign, reg0, 1),#readying_attack
(else_try),
(this_or_next|eq, ":anim", "anim_release_bow"),
(this_or_next|eq, ":anim", "anim_release_crossbow"),
(this_or_next|eq, ":anim", "anim_release_javelin"),
(this_or_next|eq, ":anim", "anim_release_throwing_knife"),
(this_or_next|eq, ":anim", "anim_release_throwing_axe"),
(this_or_next|eq, ":anim", "anim_release_stone"),
(this_or_next|eq, ":anim", "anim_release_pistol"),
(this_or_next|eq, ":anim", "anim_release_musket"),
(this_or_next|eq, ":anim", "anim_release_swingright_fist"),
(this_or_next|eq, ":anim", "anim_release_swingleft_fist"),
(this_or_next|eq, ":anim", "anim_release_direct_fist"),
(this_or_next|eq, ":anim", "anim_release_uppercut_fist"),
(this_or_next|eq, ":anim", "anim_release_slashright_twohanded"),
(this_or_next|eq, ":anim", "anim_release_slashleft_twohanded"),
(this_or_next|eq, ":anim", "anim_release_thrust_twohanded"),
(this_or_next|eq, ":anim", "anim_release_overswing_twohanded"),
(this_or_next|eq, ":anim", "anim_release_thrust_onehanded"),
(this_or_next|eq, ":anim", "anim_release_thrust_onehanded_horseback"),
(this_or_next|eq, ":anim", "anim_release_thrust_onehanded_lance"),
(this_or_next|eq, ":anim", "anim_release_slashright_onehanded"),
(this_or_next|eq, ":anim", "anim_release_slashleft_onehanded"),
(this_or_next|eq, ":anim", "anim_release_overswing_onehanded"),
(this_or_next|eq, ":anim", "anim_release_slash_horseback_right"),
(this_or_next|eq, ":anim", "anim_release_slash_horseback_left"),
(this_or_next|eq, ":anim", "anim_release_slash_horseback_polearm_right"),
(this_or_next|eq, ":anim", "anim_release_slash_horseback_polearm_left"),
(this_or_next|eq, ":anim", "anim_release_overswing_staff"),
(this_or_next|eq, ":anim", "anim_release_thrust_staff"),
(this_or_next|eq, ":anim", "anim_release_slashleft_staff"),
(this_or_next|eq, ":anim", "anim_release_slashright_staff"),
(this_or_next|eq, ":anim", "anim_crouch_release_pistol"),
(this_or_next|eq, ":anim", "anim_release_overswing_spear"),
(this_or_next|eq, ":anim", "anim_release_overswing_musket"),
(eq, ":anim", "anim_release_thrust_musket"),
(assign, reg0, 2),#releasing_attack
(else_try),
(this_or_next|eq, ":anim", "anim_reload_crossbow"),
(this_or_next|eq, ":anim", "anim_reload_crossbow_horseback"),
(this_or_next|eq, ":anim", "anim_reload_pistol"),
(this_or_next|eq, ":anim", "anim_reload_musket"),
(this_or_next|eq, ":anim", "anim_reload_musket_full"),
(this_or_next|eq, ":anim", "anim_reload_musket_two_third"),
(this_or_next|eq, ":anim", "anim_reload_musket_one_third"),
(eq, ":anim", "anim_reload_pistol_half"),
(assign, reg0, 5),#reloading
(try_end),
(else_try),
(agent_get_attack_action, reg0, ":agent_id"),
(try_end),
(try_end),
]),
_Sebastian_ said:Both operations are supposed to work for players aswell, but agent_get_attack_action is bugged on dedicated servers(it was back on v1.153 atleast)... on both, server- and client side.
You have to write a workaround which checks for the specific attack animations.
Edit
This is the workaround I made for Battle of Europe.
It should work on Native aswell.
Code:("workaround_agent_attack_action", [ (store_script_param, ":agent_id", 1), (assign, reg0, 0), (try_begin), (agent_is_active, ":agent_id"), (agent_is_alive, ":agent_id"), (assign, ":workaround", 0), (try_begin),#on decicated server (multiplayer_is_dedicated_server), (assign, ":workaround", 1), (else_try),#client side while on decicated server (game_in_multiplayer_mode), (neg|multiplayer_is_server), (assign, ":workaround", 1), (try_end), (try_begin), (eq, ":workaround", 1), (agent_get_animation, ":anim", ":agent_id", 1),#upper body animation (try_begin), (this_or_next|eq, ":anim", "anim_ready_bow"), (this_or_next|eq, ":anim", "anim_ready_crossbow"), (this_or_next|eq, ":anim", "anim_ready_javelin"), (this_or_next|eq, ":anim", "anim_ready_throwing_knife"), (this_or_next|eq, ":anim", "anim_ready_throwing_axe"), (this_or_next|eq, ":anim", "anim_ready_stone"), (this_or_next|eq, ":anim", "anim_ready_pistol"), (this_or_next|eq, ":anim", "anim_ready_musket"), (this_or_next|eq, ":anim", "anim_ready_swingright_fist"), (this_or_next|eq, ":anim", "anim_ready_swingleft_fist"), (this_or_next|eq, ":anim", "anim_ready_direct_fist"), (this_or_next|eq, ":anim", "anim_ready_uppercut_fist"), (this_or_next|eq, ":anim", "anim_ready_slashright_twohanded"), (this_or_next|eq, ":anim", "anim_ready_slashleft_twohanded"), (this_or_next|eq, ":anim", "anim_ready_thrust_twohanded"), (this_or_next|eq, ":anim", "anim_ready_overswing_twohanded"), (this_or_next|eq, ":anim", "anim_ready_thrust_onehanded"), (this_or_next|eq, ":anim", "anim_ready_thrust_onehanded_horseback"), (this_or_next|eq, ":anim", "anim_ready_thrust_onehanded_lance"), (this_or_next|eq, ":anim", "anim_ready_slashright_onehanded"), (this_or_next|eq, ":anim", "anim_ready_slashleft_onehanded"), (this_or_next|eq, ":anim", "anim_ready_overswing_onehanded"), (this_or_next|eq, ":anim", "anim_ready_slash_horseback_right"), (this_or_next|eq, ":anim", "anim_ready_slash_horseback_left"), (this_or_next|eq, ":anim", "anim_ready_slash_horseback_polearm_right"), (this_or_next|eq, ":anim", "anim_ready_slash_horseback_polearm_left"), (this_or_next|eq, ":anim", "anim_ready_overswing_staff"), (this_or_next|eq, ":anim", "anim_ready_thrust_staff"), (this_or_next|eq, ":anim", "anim_ready_slashleft_staff"), (this_or_next|eq, ":anim", "anim_ready_slashright_staff"), (this_or_next|eq, ":anim", "anim_crouch_ready_pistol"), (this_or_next|eq, ":anim", "anim_ready_overswing_spear"), (this_or_next|eq, ":anim", "anim_ready_overswing_musket"), (eq, ":anim", "anim_ready_thrust_musket"), (assign, reg0, 1),#readying_attack (else_try), (this_or_next|eq, ":anim", "anim_release_bow"), (this_or_next|eq, ":anim", "anim_release_crossbow"), (this_or_next|eq, ":anim", "anim_release_javelin"), (this_or_next|eq, ":anim", "anim_release_throwing_knife"), (this_or_next|eq, ":anim", "anim_release_throwing_axe"), (this_or_next|eq, ":anim", "anim_release_stone"), (this_or_next|eq, ":anim", "anim_release_pistol"), (this_or_next|eq, ":anim", "anim_release_musket"), (this_or_next|eq, ":anim", "anim_release_swingright_fist"), (this_or_next|eq, ":anim", "anim_release_swingleft_fist"), (this_or_next|eq, ":anim", "anim_release_direct_fist"), (this_or_next|eq, ":anim", "anim_release_uppercut_fist"), (this_or_next|eq, ":anim", "anim_release_slashright_twohanded"), (this_or_next|eq, ":anim", "anim_release_slashleft_twohanded"), (this_or_next|eq, ":anim", "anim_release_thrust_twohanded"), (this_or_next|eq, ":anim", "anim_release_overswing_twohanded"), (this_or_next|eq, ":anim", "anim_release_thrust_onehanded"), (this_or_next|eq, ":anim", "anim_release_thrust_onehanded_horseback"), (this_or_next|eq, ":anim", "anim_release_thrust_onehanded_lance"), (this_or_next|eq, ":anim", "anim_release_slashright_onehanded"), (this_or_next|eq, ":anim", "anim_release_slashleft_onehanded"), (this_or_next|eq, ":anim", "anim_release_overswing_onehanded"), (this_or_next|eq, ":anim", "anim_release_slash_horseback_right"), (this_or_next|eq, ":anim", "anim_release_slash_horseback_left"), (this_or_next|eq, ":anim", "anim_release_slash_horseback_polearm_right"), (this_or_next|eq, ":anim", "anim_release_slash_horseback_polearm_left"), (this_or_next|eq, ":anim", "anim_release_overswing_staff"), (this_or_next|eq, ":anim", "anim_release_thrust_staff"), (this_or_next|eq, ":anim", "anim_release_slashleft_staff"), (this_or_next|eq, ":anim", "anim_release_slashright_staff"), (this_or_next|eq, ":anim", "anim_crouch_release_pistol"), (this_or_next|eq, ":anim", "anim_release_overswing_spear"), (this_or_next|eq, ":anim", "anim_release_overswing_musket"), (eq, ":anim", "anim_release_thrust_musket"), (assign, reg0, 2),#releasing_attack (else_try), (this_or_next|eq, ":anim", "anim_reload_crossbow"), (this_or_next|eq, ":anim", "anim_reload_crossbow_horseback"), (this_or_next|eq, ":anim", "anim_reload_pistol"), (this_or_next|eq, ":anim", "anim_reload_musket"), (this_or_next|eq, ":anim", "anim_reload_musket_full"), (this_or_next|eq, ":anim", "anim_reload_musket_two_third"), (this_or_next|eq, ":anim", "anim_reload_musket_one_third"), (eq, ":anim", "anim_reload_pistol_half"), (assign, reg0, 5),#reloading (try_end), (else_try), (agent_get_attack_action, reg0, ":agent_id"), (try_end), (try_end), ]),
Somebody said:No, because there's no point setting them all at once when the agent can only play one animation.
(agent_get_defend_action, ":defend_action", ":agent_id"),
(agent_get_defend_action, reg1, ":agent_id"),
# (agent_set_defend_action, <agent_id>, <value>, <duration-in-1/1000-seconds>),
# Forces the agent to perform a defend action. Possible values: -2 = cancel any action (1.153+), 0 = defend_down, 1 = defend_right, 2 = defend_left, 3 = defend_up. Does time value determine delay, speed or duration? 4research.
_Sebastian_ said:Reading and understanding the operation's description and declaration would be a good idea, wouldnt it?
Code:# (agent_set_defend_action, <agent_id>, <value>, <duration-in-1/1000-seconds>), # Forces the agent to perform a defend action. Possible values: -2 = cancel any action (1.153+), 0 = defend_down, 1 = defend_right, 2 = defend_left, 3 = defend_up. Does time value determine delay, speed or duration? 4research.
_Sebastian_ said:The consequences block is executed 1 second after you've clicked the specific key.
If you want to make it work immediately, change the time variables from 0, 0, 1, to 0, 0, 0,...
I'm also not quite sure if the set operations work for players, you just asked about the get operations before...
The_dragon said:agent_set_defend_action does not work for players. AI only.
So you can't make yourself an autoblock using module system.
Same goes for the set_attack and set_look_direction operations.
At the moment the only person that is acting rude is you.modder123 said:also you are one of the rudest people on the planet.
_Sebastian_ said:At the moment the only person that is acting rude is you.modder123 said:also you are one of the rudest people on the planet.
According to your posts in another thread, you tend to troll other people... People that are actually trying to help you.
So stop acting like this, otherwise you wont get any further help anymore!
modder123 said:not logging on here again bye