Client Unable to Execute Code, pre O.S.P

Users who are viewing this thread

Fat Cat

Recruit
Hi all,

This is concerning Lan matches in Battle Mode, I believe it is possible over dedicated servers if wanted but would need code change.


In Lan Multiplayer, the bots' Non Default Groups can be given orders, by the Server and Clients.
Default Groups - 1,2,3 (Infantry, Archers, Cavalry),
Non Default Groups - groups 4 to 9. (grc_infantry to (custom) grc_group3 to grc_group9 ).

Lan Host (Server) has NO problems giving their new groups orders by pressing "Group X Hear Me",
one small problem is the first "Unit Commands / Orders" (bots' Movement/Formation/Weapons) page does not show but works,
the next "Unit Commands / Orders" (Hold Fire /Blunt /2 Ranks /5 Ranks) pages are shown as normal.

Client's key press "Group X Hear Me" not working,
Clients can only give orders to new groups by pressing "Others Key" instead of "Group X Hear Me",
this is annoying and means ALL Non Default Groups follow same orders (not good enough, limits Clients to 4 controllable Groups only),

Client side keypress codes not working to spawn in extra troops if somebody can look at this also please.

I think the problem is Client / Server Events (could be my syntax or slots), would somebody be kind enough to offer or create a solution.


Notes;
Group 9 is not selectable / or gives wall of errors and still works, don't know why tried loads of combinations to no luck,
honestly not the biggest problem here for now and 6/7 groups of 25-40 feels about right.

Tried with and without Troops' IDs pre-assigned under battle / custom template, at ti_on_agent_spawn section
using add_visitors_to_current_scene - eg Swadian Militia group 1, Swadian Footman group 2, Swadian Infantry group 3 etc.


Can someone please look at or edit / write the code to make this possible, I am stuck still with this now,
will give credits when posting to O.S.P, this is now biggest hurdle, thank you for your time.


1. Make the Non Default Groups responsive to Keypresses Client-side,
2. Make so Client can spawn troops by Keypress (Server already can),
3. Get the "Unit Commands / Orders" first page to show up properly (server and client side).




# Please forgive the various different codes for this, could not get any to work Client Side, all will work Server Side though.
# These will let Server command Non Default Groups no problem.

Code:
multiplayer_more_units_group3_orders = (#
    0, 0, 0,
    [
    (key_clicked,key_z),
    # (game_key_clicked, gk_group3_hear),
     (store_trigger_param_1, ":agent_no"),
     # (store_trigger_param_2, ":playerteam"),
     # (store_trigger_param_2, ":grc_group3"),

     (try_begin),# 1
       (multiplayer_is_server),#                          check is done serverside, as well as spawning the dropped item on the ground
       # (neg|agent_is_non_player, ":agent_no"), #        not for bots, only players ### gives P1 agent id errors but works, P2 jumps to group-code but fails
       (multiplayer_get_my_player, ":player_no"),#        Client operation. Retrieves current player's player_id reference.###
       (player_get_agent_id, ":agent_no", ":player_no"),# Retrieves player's current agent reference. Returns a negative value if player has no agent.
       # (multiplayer_get_my_team, ":playerteam"),#       Client operation. Retrieves player's currently selected team.
       # (call_script,"script_group3_listen",":agent_no"),
       (display_message, "@Group 4 Server Working"),

     (else_try),###
       (neg|multiplayer_is_server), #                       client, only for displaying the message.
       # (multiplayer_get_my_team, ":playerteam"),#         Client operation. Retrieves player's currently selected team.
       (multiplayer_get_my_player, ":my_player"),
       (player_get_agent_id, ":my_agent", ":my_player"),
       (eq, ":my_agent", ":agent_no"),
       # (is_between, ":group_no", grc_cavalry, grc_group4),
       # (call_script,"script_group3_listen",":agent_no"),
       (display_message, "@Group 4 Client Working"),
     (try_end),# 1
    ],
    [
         (try_begin),# 2
         # (agent_get_team, ":playerteam", ":agent_no"),# (agent_get_team, <destination>, <agent_id>),### WAS giving invalid agent id to Player 2
           (multiplayer_get_my_team, ":playerteam"),#         Client operation. Retrieves player's currently selected team.
           (troop_get_class, ":playerteam", grc_group3),###
           (team_set_order_listener, ":playerteam", grc_everyone, 0),# (team_set_order_listener, <team_no>, <sub_class>, <value>)
           (team_set_order_listener, ":playerteam", grc_group3),#
           (class_is_listening_order, ":playerteam", grc_group3),
           # (call_script,"script_group3_listen",":agent_no"),
           # (multiplayer_send_int_to_server, multiplayer_event_other_event_send_group, ":grc_group3"),### without the ":grc_group3", grc_group3 P1 gets auto killed?
           (display_message, "@Group 4"),
         (try_end),# 2
    ])


multiplayer_more_units_group4_orders = (
  0, 0, 0, [
  (neg|multiplayer_is_dedicated_server),
  (key_clicked,key_b),#
  # (game_key_clicked, gk_group4_hear),#
    (assign,":agent_id"),
    (multiplayer_get_my_player, ":player_no"),#        Client operation. Retrieves current player's player_id reference.###
    (player_get_agent_id, ":agent_id", ":player_no"),# Retrieves player's current agent reference. Returns a negative value if player has no agent.
    (agent_is_active,":agent_id"),
    (agent_is_alive,":agent_id"),
    (multiplayer_get_my_team, ":playerteam"),
    (try_begin),
      (troop_get_class, ":playerteam", grc_group4),### watch values
      (team_set_order_listener, ":playerteam", grc_infantry, 0),# (team_set_order_listener, <team_no>, <sub_class>, <value>)
      (team_set_order_listener, ":playerteam", grc_archers, 0),#
      (team_set_order_listener, ":playerteam", grc_cavalry, 0),#
      (team_set_order_listener, ":playerteam", grc_group3, 0),#
      (team_set_order_listener, ":playerteam", grc_group5, 0),#
      (team_set_order_listener, ":playerteam", grc_group6, 0),#
      (team_set_order_listener, ":playerteam", grc_group7, 0),#
      (team_set_order_listener, ":playerteam", grc_group8, 0),#
      (team_set_order_listener, ":playerteam", grc_group4),#
      (class_is_listening_order, ":playerteam", grc_group4),
      (display_message, "@Group 5"),
    (else_try),
      (display_message, "@Group 5 not working..."),
    (try_end),
  ],
  [
  ])


multiplayer_more_units_group5_orders = (
  0, 0, 0,
  [
    (key_clicked, key_n),#
    # (game_key_clicked, gk_group5_hear),#
    (store_trigger_param_1, ":player_no"),
    (store_trigger_param_2, ":playerteam"),
    (store_trigger_param_3, ":agent_no"),

    (try_begin),# 3
      (multiplayer_get_my_player, ":player_no"),#        Client operation. Retrieves current player's player_id reference.###
      (multiplayer_get_my_team, ":playerteam"),
      (player_get_agent_id, ":agent_no", ":player_no"),# Retrieves player's current agent reference. Returns a negative value if player has no agent.
      (troop_get_class, ":playerteam", grc_group5),#
      (team_set_order_listener, ":playerteam", grc_everyone, 0),# (team_set_order_listener, <team_no>, <sub_class>, <value>)
      (team_set_order_listener, ":playerteam", grc_group5),# (team_set_order_listener, <team_no>, <sub_class>, <value>)
      (class_is_listening_order, ":playerteam", grc_group5),
      (display_message, "@Group 6 part 1"),
    (try_end),# 3
  ],
  [

      (try_begin),# 1
        # (player_get_agent_id, ":agent_no", ":player_no"),
        (agent_is_active,":agent_no"),
        (agent_is_alive,":agent_no"),
        (agent_is_human, ":agent_no"),# FC added test
        (agent_get_team, ":playerteam", ":agent_no"),#
        (troop_get_class, ":playerteam", grc_group5),#
          (try_for_agents, ":trooper"),# 2
            (agent_is_alive, ":trooper"),
            (agent_is_human, ":trooper"),
            (agent_is_non_player, ":trooper"),
            (agent_get_team, ":team", ":trooper"),
            (eq, ":team", ":playerteam"), #On Player's side?
            (agent_get_division, ":class", ":trooper"),### was
            (eq, ":class", grc_group5),
            (display_message, "@Group 6 part 2"),
          (try_end),# 2
      (try_end),# 1
  ])


multiplayer_more_units_group6_orders = (
  0, 0, 0, [],
  [
##  (neg|multiplayer_is_dedicated_server),
  # (this_or_next|multiplayer_is_server),
  # (neg|game_in_multiplayer_mode),
  (game_key_clicked, gk_group6_hear),#
    (try_begin),
    (assign,":agent_id"),
    # (get_player_agent_no,":agent_id"),
    (multiplayer_get_my_player, ":player_no"),#        Client operation. Retrieves current player's player_id reference.###
      # (multiplayer_get_my_team, ":playerteam"),
    (player_get_agent_id, ":agent_id", ":player_no"),# Retrieves player's current agent reference. Returns a negative value if player has no agent.

    (agent_is_active,":agent_id"),
    (agent_is_alive,":agent_id"),
    (agent_is_human, ":agent_id"),#
    (agent_get_team, ":playerteam", ":agent_id"),#
    (troop_get_class, ":playerteam", 6),#
    (team_set_order_listener, ":playerteam", grc_infantry, 0),#
    (team_set_order_listener, ":playerteam", grc_archers, 0),#
    (team_set_order_listener, ":playerteam", grc_cavalry, 0),#
    (team_set_order_listener, ":playerteam", 3, 0),#
    (team_set_order_listener, ":playerteam", 4, 0),#
    (team_set_order_listener, ":playerteam", 5, 0),#
    (team_set_order_listener, ":playerteam", 7, 0),#
    (team_set_order_listener, ":playerteam", 8, 0),#
    (team_set_order_listener, ":playerteam", 6),#
    # (call_script,"script_group6_listen",":agent_id",":playerteam"),
    (display_message, "@Group 7"),
    (try_end),
  ])

Code:
### extra spawn in troops, works no problem for Server, not Clients though

multiplayer_more_troops_swadian_team_1_a = (##
  0, 0, 0, [],
  [
    (key_is_down, key_f11),
     (try_begin),
        (key_clicked, key_1),### EXAMPLE of set,
        (add_visitors_to_current_scene, 0, "trp_swadian_footman", 5, 0),# Team 1
        (troop_set_class, "trp_swadian_footman", 3),#    Group 4 Others / grc_infantry (0, 1, 2 are default groups)
        (display_message, "@Team 1, 5 Swadian Foot, Group 4"),# grc_group3 (custom group in header_mission_templates.py)
     (else_try),
        (key_clicked, key_2),### EXAMPLE
        (add_visitors_to_current_scene, 0, "trp_swadian_infantry", 5, 0),# Team 1
        (troop_set_class, "trp_swadian_infantry", 4),#    Group 5 Others / grc_group6 (custom group in header_mission_templates.py)
        (display_message, "@Team 1, 5 Swadian Foot, Group 5"),
     (else_try),
        (key_clicked, key_3),### EXAMPLE
        (add_visitors_to_current_scene, 32, "trp_swadian_sergeant", 5, 1),# Team 2
        (troop_set_class, "trp_swadian_sergeant", 3),#    Group 4 Others / grc_group3 (custom group in header_mission_templates.py)
        (display_message, "@Team 2, 5 Swadian Foot, Group 4"),
     (try_end),
    ])

############
 
Back
Top Bottom