OSP Code MP Poll and admin enhancements for mod creators (updated for 1.126)

Users who are viewing this thread

Hm, I put the mod in my native and was able to play warband with no problems. On my personally hosted game everything worked great, and i was even able to play on other servers, though the added admin options didn't work there. However, when I changed my dedicated server module native to include the new pack, i get up to "Loading party templates" before i get an error. On the build thingy it shows "....." and i get one of those "Mount&Blade: Warband has stopped working" errors.
 
Vornne is currently away, and unable to help at this time, sorry. Not going to be back anytime soon from what I can remember either.

The best advice I can give you is make sure you follow the install instructions to the letter (make sure you get a clean native folder and try again).
 
I'm not quite sure how I would go about making it native compatible. I tried running the server on pollmod but it was still listed as native.
It seems I can't host a native with tampered files though, which is odd because custom maps can be put in.

I'm assuming I need both natives (the one In the dedi files and the one in the game) to be edited or do I only need the dedi ones to be edited?
 
The latest test version (not in the first post, the one a few posts back) was specifically made to be native compatible, and it works fine with a dedicated server for me... though I copy the dedicated server executable to my client install and run it from there (so I don't have to copy files over every single time I make an update), so maybe there is some problem when using the normal dedicated server files. I can't test that out at the moment, since as Scorch said, I'm on holiday; though only for about another week.
 
Which files would I need if I just wanted the admin message system(So that it will work with unmodified players)?

Edit: If you know, could you give me the lines to edit into the default files, as I want to use it on a mod.
 
So you just want to make some server side tweaks to the native module, not release a new mod to players? I haven't posted the module system code for the native compatible version yet; though even then separating out that particular feature probably wouldn't be straightforward. I have the code with me, but not the game; so I might have time to make a module system diff for you later, without any testing to confirm it works, or if you aren't in any hurry I could assemble and test it next week, when I get back.
 
Sorry, I missed your post.
Sour Cream and Onion said:
I'm not quite sure how I would go about making it native compatible. I tried running the server on pollmod but it was still listed as native.
It seems I can't host a native with tampered files though, which is odd because custom maps can be put in.

I'm assuming I need both natives (the one In the dedi files and the one in the game) to be edited or do I only need the dedi ones to be edited?
The latest version of this mod is supposed to be listed as "Native", replacing the native mod; so new players - or anyone - don't have to download a new module to play on the server: in other words, a "server side mod". The first posts are of the previous version, which needed to be a separate mod. You will need to apply the modded txt files to the dedicated server native mod directory for the mod to work at all, and people need to apply them to the client directory to be able to use some of the new admin features, and to get the better looking presentations as a player.

I did quickly test running the dedicated server with the latest test files before I released them, and it worked; though I ran it by copying the server exe and server scripts to the warband client directory, rather than running from the default dedicated server install - as that is simply a cut down version of the client, as I understand it. Could you try running the dedicated server like I did, from the client install directory, and see if it works then? You can run server and client on the same computer if you don't want to copy the full client to your server machine.
 
If I was going to use the admin message script part I'd have wanted it yesterday/today, but if you're busy don't worry about it :p

Edit: It's for the FPW mod btw
 
Ahh, then you don't need it to be native compatible at all, FPW is a different mod than native. You could try use the version in the first posts (as the newer version mainly just adds native compatibility rather than enhanced features) and just skip the parts that seem related to polls; or alternatively, I might be able to sort it out for you in the next day or so, depending on what happens.
 
and is the latest version released yet?
because I used the only download link I could find and replaced the files with the native ones in the dedicated server files and it won't build the server.
 
Sour Cream and Onion said:
because I used the only download link I could find and replaced the files with the native ones in the dedicated server files and it won't build the server.
"build the server"? The link to the latest version is here (the same as was posted above), and it is only the text files to extract to your install, not module system files to be built.
 
Well the FPW .txt files may have been modified so it might screw up the mod, but I'll try that anyway.


Edit: First attempt, crashed when clicking "multiplayer".

Edit2: Same again. Pollmod.zip doesn't work with FPW it seems :sad:
 
Of course, the released files work only with native; the release was specifically a native compatible mod, which means can appear to be the default native module to clients. To use with FPW you would need to merge the module system changes into the code of that mod, and compile it; which could be done using the code from the first posts in this thread (with a few updates if using 1.127), or you could wait a few days for me to update it.
 
Vornne said:
@@ -52,6 +52,10 @@
multiplayer_event_admin_set_anti_cheat                        = 44
multiplayer_event_open_game_rules                            = 45

multiplayer_event_admin_message_set_player                    = 46
multiplayer_event_admin_message_to_player                    = 47
multiplayer_event_admin_set_poll_question                    = 48

#server events
multiplayer_event_return_max_num_players                      = 50
multiplayer_event_return_num_bots_in_team                    = 51
@@ -112,6 +116,10 @@
multiplayer_event_return_max_num_bots                        = 106
multiplayer_event_return_server_mission_timer_while_player_joined = 107

multiplayer_event_admin_message_set_admin                    = 108
multiplayer_event_admin_message                              = 109
multiplayer_event_return_admin_poll_question                  = 110

#multiplayer message types
multiplayer_message_type_auto_team_balance_done      = 2
multiplayer_message_type_auto_team_balance_next      = 3
@@ -967,6 +967,7 @@
slot_player_bot_type_4_wanted                  = 38
slot_player_spawn_count                        = 39

slot_player_admin_message_target              = 80

########################################################
##  TEAM SLOTS            #############################
@@ -1413,6 +1414,9 @@
multiplayer_game_type_names_begin = "str_multi_game_type_1"
multiplayer_game_type_names_end = "str_multi_game_types_end"

multiplayer_poll_reasons_begin = "str_poll_reason_team_killing"
multiplayer_poll_reasons_end = "str_poll_reason_end"

quick_battle_troops_begin = "trp_quick_battle_troop_1"
quick_battle_troops_end = "trp_quick_battle_troops_end"

@@ -1706,3 +1710,5 @@
price_adjustment = 25 #the percent by which a trade at a center alters price

fire_duration = 4 #fires takes 4 hours

multiplayer_pack_message_shift_size = 256
@@ -521,6 +521,7 @@
    (eq, "$g_multiplayer_poll_ended", 0),
    (store_mission_timer_a, ":mission_timer"),
    (store_add, ":total_votes", "$g_multiplayer_poll_no_count", "$g_multiplayer_poll_yes_count"),
    (this_or_next|neq, "$g_multiplayer_poll_admin_override", 0),
    (this_or_next|eq, ":total_votes", "$g_multiplayer_poll_num_sent"),
    (gt, ":mission_timer", "$g_multiplayer_poll_end_time"),
    (call_script, "script_cf_multiplayer_evaluate_poll"),
@@ -628,6 +629,17 @@
    (start_presentation, "prsnt_multiplayer_team_score_display"),
    ])

multiplayer_admin_message_stored_player = (
  0, 0, 0, [(key_clicked, key_f11)], [
    (multiplayer_get_my_player, ":player_no"),
    (player_is_admin, ":player_no"),
    (try_begin),
      (call_script, "script_cf_multiplayer_stored_player_no_is_valid"),
    (else_try),
      (assign, "$g_multiplayer_players_list_selected_player_no", 0),
    (end_try),
    (start_presentation, "prsnt_multiplayer_get_admin_message"),
  ])

common_battle_mission_start = (
  ti_before_mission_start, 0, 0, [],
@@ -8226,6 +8238,8 @@
        (eq, "$g_waiting_for_confirmation_to_terminate", 0),
        (start_presentation, "prsnt_multiplayer_escape_menu"),
        ]),

      multiplayer_admin_message_stored_player,
      ],
  ),

@@ -8588,6 +8602,8 @@
        (eq, "$g_waiting_for_confirmation_to_terminate", 0),
        (start_presentation, "prsnt_multiplayer_escape_menu"),
        ]),

      multiplayer_admin_message_stored_player,
      ],
  ),

@@ -9686,6 +9702,8 @@
        (eq, "$g_waiting_for_confirmation_to_terminate", 0),
        (start_presentation, "prsnt_multiplayer_escape_menu"),
        ]),

      multiplayer_admin_message_stored_player,
      ],
  ),

@@ -10469,6 +10487,8 @@
        (eq, "$g_waiting_for_confirmation_to_terminate", 0),
        (start_presentation, "prsnt_multiplayer_escape_menu"),
        ]),

      multiplayer_admin_message_stored_player,
      ],
  ),

@@ -11557,6 +11577,8 @@
        (eq, "$g_waiting_for_confirmation_to_terminate", 0),
        (start_presentation, "prsnt_multiplayer_escape_menu"),
        ]),

      multiplayer_admin_message_stored_player,
      ],
  ),

@@ -12811,6 +12833,8 @@
        (eq, "$g_waiting_for_confirmation_to_terminate", 0),
        (start_presentation, "prsnt_multiplayer_escape_menu"),
        ]),

      multiplayer_admin_message_stored_player,
      ],
  ),

@@ -13976,6 +14000,8 @@
        (eq, "$g_waiting_for_confirmation_to_terminate", 0),
        (start_presentation, "prsnt_multiplayer_escape_menu"),
        ]),

      multiplayer_admin_message_stored_player,
      ],
  ),

@@ -9060,6 +9060,7 @@
        (try_begin),
          (store_script_param, ":value", 3),
          (store_script_param, ":value_2", 4),
          (store_script_param, ":value_3", 5),
          #validity check
          (eq, "$g_multiplayer_poll_running", 0),
          (store_mission_timer_a, ":mission_timer"),
@@ -9070,6 +9071,8 @@
            (eq, ":value", 1), # kicking a player
            (try_begin),
              (eq, "$g_multiplayer_kick_voteable", 1),
              (this_or_next|neg|multiplayer_is_dedicated_server), #client-servers see all players as admin
              (neg|player_is_admin, ":value_2"),
              (player_is_active, ":value_2"),
              (assign, ":continue", 1),
            (try_end),
@@ -9077,6 +9080,8 @@
            (eq, ":value", 2), # banning a player
            (try_begin),
              (eq, "$g_multiplayer_ban_voteable", 1),
              (this_or_next|neg|multiplayer_is_dedicated_server), #client-servers see all players as admin
              (neg|player_is_admin, ":value_2"),
              (player_is_active, ":value_2"),
              (save_ban_info_of_player, ":value_2"),
              (assign, ":continue", 1),
@@ -9098,7 +9103,6 @@
            (eq, ":value", 3), #vote for map and factions
            (try_begin),
              (eq, "$g_multiplayer_factions_voteable", 1),
              (store_script_param, ":value_3", 5),
              (store_script_param, ":value_4", 6),
              (call_script, "script_multiplayer_fill_map_game_types", "$g_multiplayer_game_type"),
              (assign, ":num_maps", reg0),
@@ -9118,11 +9122,16 @@
            (try_end),
          (else_try),
            (eq, ":value", 4), #vote for number of bots
            (store_script_param, ":value_3", 5),
            (store_add, ":upper_limit", "$g_multiplayer_num_bots_voteable", 1),
            (is_between, ":value_2", 0, ":upper_limit"),
            (is_between, ":value_3", 0, ":upper_limit"),
            (assign, ":continue", 1),
          (else_try),
            (eq, ":value", 5), #admin custom poll
            (player_is_admin, ":player_no"),
            (neg|str_is_empty, s37),
            (assign, ":value_2", -1),
            (assign, ":continue", 1),
          (try_end),
          (eq, ":continue", 1),
          #condition checks are done
@@ -9130,10 +9139,12 @@
          (try_begin),
            (eq, ":value", 1), #kicking a player
            (str_store_player_username, s1, ":value_2"),
            (call_script, "script_multiplayer_get_reason_string", ":value_3"),
            (server_add_message_to_log, "str_poll_kick_player_s1_by_s0"),
          (else_try),
            (eq, ":value", 2), #banning a player
            (str_store_player_username, s1, ":value_2"),
            (call_script, "script_multiplayer_get_reason_string", ":value_3"),
            (server_add_message_to_log, "str_poll_ban_player_s1_by_s0"),
          (else_try),
            (eq, ":value", 0), #vote for map
@@ -9160,30 +9171,56 @@
          (assign, "$g_multiplayer_poll_num_sent", 0),
          (assign, "$g_multiplayer_poll_yes_count", 0),
          (assign, "$g_multiplayer_poll_no_count", 0),
          (assign, "$g_multiplayer_poll_admin_override", 0),
          (assign, "$g_multiplayer_poll_to_show", ":value"),
          (assign, "$g_multiplayer_poll_value_to_show", ":value_2"),
          (try_begin),
            (eq, ":value", 3),
            (assign, "$g_multiplayer_poll_value_2_to_show", ":value_3"),
            (assign, "$g_multiplayer_poll_value_3_to_show", ":value_4"),
            (try_begin), #store requester in upper bits of faction 1
              (is_between, ":player_no", 1, multiplayer_max_possible_player_id),
              (store_mul, "$g_multiplayer_poll_value_2_to_show", ":player_no", multiplayer_pack_message_shift_size),
            (else_try),
              (assign, "$g_multiplayer_poll_value_2_to_show", 0),
            (try_end),
            (store_add, "$g_multiplayer_poll_value_2_to_show", ":value_3", "$g_multiplayer_poll_value_2_to_show"), #faction 1
            (assign, "$g_multiplayer_poll_value_3_to_show", ":value_4"), #faction 2
          (else_try),
            (eq, ":value", 4),
            (assign, "$g_multiplayer_poll_value_2_to_show", ":value_3"),
            (assign, "$g_multiplayer_poll_value_3_to_show", -1),
            (assign, "$g_multiplayer_poll_value_2_to_show", ":value_3"), #bots team 2
            (assign, "$g_multiplayer_poll_value_3_to_show", ":player_no"), #requester
          (else_try),
            (eq, ":value", 1),
            (assign, "$g_multiplayer_poll_value_2_to_show", ":player_no"), #requester
            (assign, "$g_multiplayer_poll_value_3_to_show", ":value_3"), #reason
          (else_try),
            (eq, ":value", 2),
            (assign, "$g_multiplayer_poll_value_2_to_show", ":player_no"), #requester
            (assign, "$g_multiplayer_poll_value_3_to_show", ":value_3"), #reason
          (else_try),
            (assign, "$g_multiplayer_poll_value_2_to_show", -1),
            (assign, "$g_multiplayer_poll_value_2_to_show", ":player_no"), #requester
            (assign, "$g_multiplayer_poll_value_3_to_show", -1),
          (try_end),
          (store_add, ":poll_disable_until", ":mission_timer", multiplayer_poll_disable_period),
          (player_set_slot, ":player_no", slot_player_poll_disabled_until_time, ":poll_disable_until"),
          (try_begin),
            (neg|player_is_admin, ":player_no"), #only limit non admin polling
            (store_add, ":poll_disable_until", ":mission_timer", multiplayer_poll_disable_period),
            (player_set_slot, ":player_no", slot_player_poll_disabled_until_time, ":poll_disable_until"),
          (try_end),
          (store_add, "$g_multiplayer_poll_end_time", ":mission_timer", 60),
          (get_max_players, ":num_players"),
          (try_for_range, ":cur_player", 0, ":num_players"),
            (player_is_active, ":cur_player"),
            (player_set_slot, ":cur_player", slot_player_can_answer_poll, 1),
            (val_add, "$g_multiplayer_poll_num_sent", 1),
            (try_begin),
              (eq, ":value", 5), #send custom poll question
              (multiplayer_send_string_to_player, ":cur_player", multiplayer_event_return_admin_poll_question, s37),
            (try_end),
            (multiplayer_send_4_int_to_player, ":cur_player", multiplayer_event_ask_for_poll, "$g_multiplayer_poll_to_show", "$g_multiplayer_poll_value_to_show", "$g_multiplayer_poll_value_2_to_show", "$g_multiplayer_poll_value_3_to_show"),
          (try_end),
          (try_begin),
            (eq, ":value", 3), #convert back to faction 1 only, for other scripts
            (store_mod, "$g_multiplayer_poll_value_2_to_show", "$g_multiplayer_poll_value_2_to_show", multiplayer_pack_message_shift_size),
          (try_end),
        (try_end),
      (else_try),
        (eq, ":event_type", multiplayer_event_answer_to_poll),
@@ -9191,16 +9228,30 @@
          (store_script_param, ":value", 3),
          #validity check
          (eq, "$g_multiplayer_poll_running", 1),
          (is_between, ":value", 0, 2),
          (is_between, ":value", 0, 3),
          (player_slot_eq, ":player_no", slot_player_can_answer_poll, 1),
          #condition checks are done
          (player_set_slot, ":player_no", slot_player_can_answer_poll, 0),
          (try_begin),
            (eq, ":value", 0),
            (val_add, "$g_multiplayer_poll_no_count", 1),
          (else_try),
            (eq, ":value", 1),
            (val_add, "$g_multiplayer_poll_yes_count", 1),
            (eq, ":value", 2), #abstain
            (val_sub, "$g_multiplayer_poll_num_sent", 1),
          (else_try),
            (player_is_admin, ":player_no"),
            (try_begin), #override poll, ending it
              (eq, ":value", 0),
              (assign, "$g_multiplayer_poll_admin_override", -1),
            (else_try),
              (eq, ":value", 1),
              (assign, "$g_multiplayer_poll_admin_override", 1),
            (try_end),
          (else_try),
            (try_begin),
              (eq, ":value", 0),
              (val_add, "$g_multiplayer_poll_no_count", 1),
            (else_try),
              (eq, ":value", 1),
              (val_add, "$g_multiplayer_poll_yes_count", 1),
            (try_end),
          (try_end),
        (try_end),
      (else_try),
@@ -9217,11 +9268,12 @@
        (eq, ":event_type", multiplayer_event_admin_ban_player),
        (try_begin),
          (store_script_param, ":value", 3),
          (store_script_param, ":perm_temp", 4),
          #validity check
          (player_is_admin, ":player_no"),
          (player_is_active, ":value"),
          #condition checks are done
          (ban_player, ":value", 0, ":player_no"),
          (ban_player, ":value", ":perm_temp", ":player_no"),
        (try_end),
      (else_try),
        (eq, ":event_type", multiplayer_event_admin_set_valid_vote_ratio),
@@ -9346,6 +9398,48 @@
          (assign, "$g_multiplayer_force_default_armor", ":value"),
        (try_end),
      (else_try),
        (eq, ":event_type", multiplayer_event_admin_message_set_player),
        (try_begin),
          (store_script_param, ":target", 3),
          #validity check
          (player_is_admin, ":player_no"),
          #condition checks are done
          (player_set_slot, ":player_no", slot_player_admin_message_target, ":target"),
        (try_end),
      (else_try),
        (eq, ":event_type", multiplayer_event_admin_message_to_player),
        (try_begin),
          #validity check
          (player_is_admin, ":player_no"),
          (neg|str_is_empty, s0),
          (player_get_slot, ":target", ":player_no", slot_player_admin_message_target),
          (str_store_player_username, s1, ":player_no"),
          (try_begin),
            (eq, ":target", 0), #send to all players
            (get_max_players, ":num_players"),
            (try_for_range, ":cur_player", 0, ":num_players"), #include server (0) for hosting clients
              (player_is_active, ":cur_player"),
              (multiplayer_send_int_to_player, ":cur_player", multiplayer_event_admin_message_set_admin, ":player_no"),
              (multiplayer_send_string_to_player, ":cur_player", multiplayer_event_admin_message, s0),
            (try_end),
            (server_add_message_to_log, "@*ADMIN* [{s1}] {s0}"),
          (else_try),
            (player_is_active, ":target"),
            (multiplayer_send_int_to_player, ":target", multiplayer_event_admin_message_set_admin, ":player_no"),
            (multiplayer_send_string_to_player, ":target", multiplayer_event_admin_message, s0),
            (str_store_player_username, s2, ":target"),
            (server_add_message_to_log, "@*ADMIN* [{s1}] -> [{s2}] {s0}"),
          (try_end),
        (try_end),
      (else_try),
        (eq, ":event_type", multiplayer_event_admin_set_poll_question),
        (try_begin),
          #validity check
          (player_is_admin, ":player_no"),
          (neg|str_is_empty, s0),
          (str_store_string, s37, s0), #this register should be one not used elsewhere in the module system
        (try_end),
      (else_try),
        ###############
        #CLIENT EVENTS#
        ###############
@@ -9585,6 +9679,10 @@
            (player_is_active, ":value_2"), #might go offline before here
            (assign, ":continue_to_poll", 1),
          (else_try),
            (eq, ":value", 5),
            (neg|str_is_empty, s37), #check poll question recieved
            (assign, ":continue_to_poll", 1),
          (else_try),
            (assign, ":continue_to_poll", 1),
          (try_end),
          (try_begin),
@@ -9593,6 +9691,7 @@
            (assign, "$g_multiplayer_poll_value_to_show", ":value_2"),
            (assign, "$g_multiplayer_poll_value_2_to_show", ":value_3"),
            (assign, "$g_multiplayer_poll_value_3_to_show", ":value_4"),
            (assign, "$g_multiplayer_poll_admin_override", 0),
            (store_mission_timer_a, ":mission_timer"),
            (store_add, "$g_multiplayer_poll_client_end_time", ":mission_timer", 60),
            (start_presentation, "prsnt_multiplayer_poll"),
@@ -9719,6 +9818,28 @@
          (else_try),
            (assign, "$g_my_spawn_count", ":value"),
          (try_end),
        (else_try),
          (eq, ":event_type", multiplayer_event_admin_message_set_admin),
          (try_begin),
            (store_script_param, ":admin", 3),
            (assign, "$g_multiplayer_admin_message_player_no", ":admin"),
          (try_end),
        (else_try),
          (eq, ":event_type", multiplayer_event_admin_message),
          (try_begin),
            #validity check
            (neg|str_is_empty, s0),
            (player_is_active, "$g_multiplayer_admin_message_player_no"),
            (str_store_string, s36, s0), #this register should be one not used elsewhere in the module system
            (start_presentation, "prsnt_multiplayer_admin_message"),
          (try_end),
        (else_try),
          (eq, ":event_type", multiplayer_event_return_admin_poll_question),
          (try_begin),
            #validity check
            (neg|str_is_empty, s0),
            (str_store_string, s37, s0), #this register should be one not used elsewhere in the module system
          (try_end),
        (try_end),
    ]),

@@ -9738,8 +9859,18 @@
    (store_mul, ":vote_ratio", 100, "$g_multiplayer_poll_yes_count"),
    (val_div, ":vote_ratio", ":total_votes"),
    (try_begin),
      (eq, "$g_multiplayer_poll_admin_override", 1),
      (assign, ":result", 3),
    (else_try),
      (eq, "$g_multiplayer_poll_admin_override", -1),
      (assign, ":result", 2),
    (else_try),
      (ge, ":vote_ratio", "$g_multiplayer_valid_vote_ratio"),
      (assign, ":result", 1),
    (try_end),
    (try_begin),
      (this_or_next|eq, ":result", 3),
      (eq, ":result", 1),
      (try_begin),
        (eq, "$g_multiplayer_poll_to_show", 1), #kick player
        (try_begin),
@@ -9775,6 +9906,7 @@
      (player_is_active, ":cur_player"),
      (multiplayer_send_2_int_to_player, ":cur_player", multiplayer_event_show_multiplayer_message, multiplayer_message_type_poll_result, ":result"),
    (try_end),
    (this_or_next|eq, ":result", 3),
    (eq, ":result", 1),
    ]),

@@ -11096,6 +11228,39 @@
    (try_end),
    ]),

  # script_multiplayer_get_reason_string
  # Input: reason_id
  # Output: s2 = poll reason
  ("multiplayer_get_reason_string",
    [
      (store_script_param, ":reason_id", 1),
      (val_add, ":reason_id", multiplayer_poll_reasons_begin),
      (try_begin),
        (this_or_next|lt, ":reason_id", multiplayer_poll_reasons_begin),
        (ge, ":reason_id", multiplayer_poll_reasons_end),
        (store_sub, ":reason_id", multiplayer_poll_reasons_end, 1),
      (try_end),
      (str_store_string, s2, ":reason_id"),
      ]),

  # script_cf_multiplayer_stored_player_no_is_valid
  # Input: none
  # Output: none, return true or false
  ("cf_multiplayer_stored_player_no_is_valid",
    [
      (assign, ":continue", 1),
      (try_begin),
        (eq, "$g_multiplayer_players_list_selected_player_no", 0),
      (else_try),
        (player_is_active, "$g_multiplayer_players_list_selected_player_no"),
        (player_slot_eq, "$g_multiplayer_players_list_selected_player_no", slot_player_button_index, "$g_multiplayer_players_list_selected_player_check_no"),
      (else_try),
        (display_message, "str_stored_player_invalid", 0xFF990000),
        (assign, ":continue", 0),
      (end_try),
      (eq, ":continue", 1),
      ]),

  # script_multiplayer_fill_map_game_types
  # Input: game_type
  # Output: num_maps
@@ -2424,20 +2424,36 @@
  ("multi_game_type_7", "Siege"),
  ("multi_game_types_end", "multi_game_types_end"),

  ("poll_kick_player_s1_by_s0", "{s0} started a poll to kick player {s1}."),
  ("poll_ban_player_s1_by_s0", "{s0} started a poll to ban player {s1}."),
  ("poll_kick_player_s1_by_s0", "{s0} started a poll to kick player {s1} for {s2}."),
  ("poll_ban_player_s1_by_s0", "{s0} started a poll to ban player {s1} for {s2}."),
  ("poll_change_map_to_s1_by_s0", "{s0} started a poll to change map to {s1}."),
  ("poll_change_map_to_s1_and_factions_to_s2_and_s3_by_s0", "{s0} started a poll to change map to {s1} and factions to {s2} and {s3}."),
  ("poll_change_number_of_bots_to_reg0_and_reg1_by_s0", "{s0} started a poll to change bot counts to {reg0} and {reg1}."),

  ("poll_kick_player", "Poll to kick player {s0}: 1 = Accept, 2 = Decline"),
  ("poll_ban_player", "Poll to ban player {s0}: 1 = Accept, 2 = Decline"),
  ("poll_change_map", "Poll to change map to {s0}: 1 = Accept, 2 = Decline"),
  ("poll_change_map_with_faction", "Poll to change map to {s0} and factions to {s1} versus {s2}: 1 = Accept, 2 = Decline"),
  ("poll_change_number_of_bots", "Poll to change number of bots to {reg0} for {s0} and {reg1} for {s1}: 1 = Accept, 2 = Decline"),
  ("poll_kick_player", "Poll to kick player {s0} for {s2}"),
  ("poll_ban_player", "Poll to ban player {s0} for {s2}"),
  ("poll_change_map", "Poll to change map to {s0}"),
  ("poll_change_map_with_faction", "Poll to change map to {s0} and factions to {s1} versus {s2}"),
  ("poll_change_number_of_bots", "Poll to change number of bots to {reg0} for {s0} and {reg1} for {s1}"),
  ("poll_called_by", "Called by {s1}: F8 = Accept, F9 = Decline, F10 = Abstain"),
  ("poll_time_left", "({reg0} seconds left)"),
  ("poll_admin_confirm_accept", "Press again to confirm accepting this poll immediately"),
  ("poll_admin_confirm_reject", "Press again to confirm rejecting this poll immediately"),
  ("poll_result_yes", "The poll is accepted by the majority."),
  ("poll_result_no", "The poll is rejected by the majority."),
  ("poll_result_admin_yes", "The poll is accepted by an admin."),
  ("poll_result_admin_no", "The poll is rejected by an admin."),

  ("poll_reason_team_killing", "team killing"),
  ("poll_reason_being_absent", "being absent from the game"),
  ("poll_reason_deserting_battle", "deserting from the battle"),
  ("poll_reason_abusing_glitches", "abusing glitches"),
  ("poll_reason_griefing", "griefing"),
  ("poll_reason_cheating", "cheating"),
  ("poll_reason_trolling_chat", "trolling in chat"),
  ("poll_reason_breaking_server_rules", "breaking server rules"),
  ("poll_reason_specified", "the reason specified in chat"),
  ("poll_reason_end", "poll_reason_end"),

  ("total_item_cost_reg0", "Total cost: {reg0}"),

@@ -2594,6 +2610,18 @@
  ("command", "Command:"),
  ("profile_banner_selection_text", "Choose a banner for your profile:"),
  ("use_default_banner", "Use Faction's Banner"),
  ("choose_a_reason", "Choose a reason:"),
  ("somebody", "somebody"),
  ("stored_player_invalid", "Stored player number is invalid."),
  ("message_player", "Message Player"),
  ("send_message_to_s1", "Send Message to {s1}"),
  ("all_players", "All Players"),
  ("admin_s1", "Admin {s1}:"),
  ("choose_ban_length", "Choose ban length:"),
  ("ban_temporary", "An hour"),
  ("ban_permanent", "Permanently"),
  ("poll_question", "Poll question:"),
  ("custom_question", "Custom question"),

  ("party_morale_is_low", "Morale of some troops are low!"),
  ("weekly_report", "Weekly Report"),
@@ -936,6 +936,21 @@
g_multiplayer_poll_value_3_to_show
g_multiplayer_poll_end_time
g_multiplayer_poll_client_end_time
g_multiplayer_poll_admin_override
g_multiplayer_poll_admin_warning
g_multiplayer_players_list_selected_player_no
g_multiplayer_players_list_selected_player_check_no
g_multiplayer_admin_message_player_no
g_show_poll_reasons_list_button_list_end_index
g_show_poll_reasons_list_button_list_first_index
g_presentation_obj_poll_2
g_presentation_obj_ban_length_1
g_presentation_obj_ban_length_2
g_presentation_obj_escape_menu_14
g_presentation_obj_show_players_all
g_presentation_obj_get_admin_message_1
g_presentation_obj_poll_menu_6
g_presentation_obj_get_poll_question_1
g_placing_initial_flags
g_multiplayer_team_1_first_spawn
g_multiplayer_team_2_first_spawn

I don't really know what you mean as I don't know which files each thing belongs to :\
 
Those are changes to apply to the module system files; explained here. If you don't have access to the "source code" (or whatever you want to call it) of the FPW mod you can't combine it with this mod, you need to ask the developers of FPW to add it themselves. As the topic title states, this is for mod creators - though if the creators released their full module system anyone could do it, but would have to convince the players to use their version.
 
Back
Top Bottom