1
Over The Top: WWI Steam Store Page
New Game announced! Add Over the Top: WWI to your Steam Wishlist!
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
****Saxingers Server Scripts****
***Script Codes***
("multiplayer_server_player_joined_common",
[
(store_script_param, ":player_no", 1),
(try_begin),
(this_or_next|player_is_active, ":player_no"),
(eq, ":player_no", 0),
(call_script, "script_multiplayer_init_player_slots", ":player_no"),
(store_mission_timer_a, ":player_join_time"),
(player_set_slot, ":player_no", slot_player_join_time, ":player_join_time"),
(player_set_slot, ":player_no", slot_player_first_spawn, 1),
(try_begin),
(multiplayer_is_server),
(call_script, "script_multiplayer_send_initial_information", ":player_no"),
(player_get_unique_id, reg13, ":player_no"), #Saxinger edit
(try_end),
#Saxinger begin
(try_begin),
(str_store_player_username, s1, ":player_no"),
(try_begin),
(player_is_admin, ":player_no"),
(str_store_string, s4, "@Admin {s1} joined the Server."),
(try_begin),
(try_for_range, ":player_no", "$g_player_loops_begin", multiplayer_player_loops_end),
(player_is_active, ":player_no"),
(multiplayer_send_string_to_player, ":player_no", multiplayer_event_return_admin_chat, s4),
(try_end),
(server_add_message_to_log, "@[SERVER]: {s4}"),
(try_end),
(else_try),
(str_store_string, s4, "@{s1} joined the Server. "),
(call_script, "script_multiplayer_broadcast_message"),
(server_add_message_to_log, "@[SERVER]: {s4}"),
(try_end),
(str_store_string, s2, "str_welcome_message_saxinger"),
(multiplayer_send_string_to_player, ":player_no",multiplayer_event_show_server_message, s2),
#Saxinger end
(try_end),
(try_end),
]),
multiplayer_server_log_player_leave = (
ti_on_player_exit, 0, 0, [(multiplayer_is_server),],
[
(store_trigger_param_1, ":player_no"),
(try_begin),
(player_is_active,":player_no"),
(str_store_player_username, s1, ":player_no"),
(player_get_unique_id, reg13, ":player_no"),
(server_add_message_to_log,"str_player_left_server_s1_reg13"),
(str_store_string, s4, "@{s1} left the Server. "),
(call_script, "script_multiplayer_broadcast_message"),
(try_end),
])
("multiplayer_server_on_agent_killed_or_wounded_common",
[
(store_script_param, ":dead_agent_no", 1),
(store_script_param, ":killer_agent_no", 2),
(agent_get_position, pos0, ":killer_agent_no"),#Saxinger Edit
(try_begin),
(neg|multiplayer_is_dedicated_server), # run client side code.
(call_script,"script_multiplayer_client_on_agent_killed_or_wounded_common",":dead_agent_no"),
(try_end),
# General Score + Kills + Deaths calculation score is server side, kills and deaths client side aswell
(try_begin),
(agent_is_active,":dead_agent_no"), # Only if we actually killed someone.
(agent_is_human, ":dead_agent_no"), # and not a horse =p
(agent_get_team, ":dead_agent_team", ":dead_agent_no"), # get his team
# Store playerids, If not active then store -1 If bot/horse then we have -1 aswell.
(assign, ":killer_agent_team", -1),
(try_begin),
(agent_is_active,":killer_agent_no"),
(agent_get_team, ":killer_agent_team", ":killer_agent_no"),# troopStore killer agent team
(agent_get_player_id, ":killer_agent_player", ":killer_agent_no"),
(try_begin),
(neg|player_is_active, ":killer_agent_player"),
(assign,":killer_agent_player",-1),
(else_try),
(agent_get_slot,":instance_id",":dead_agent_no",slot_agent_current_control_prop),
(prop_instance_is_valid,":instance_id"),
(prop_instance_get_scene_prop_kind, ":cannon_kind", ":instance_id"),
(try_begin),
(is_between,":cannon_kind",mm_cannon_wood_types_begin,mm_cannon_wood_types_end),
(call_script,"script_stop_agent_controlling_cannon",":instance_id",":dead_agent_no"),
(else_try),
(call_script,"script_set_agent_controlling_prop",":instance_id",":dead_agent_no",0),
(try_end),
(try_end),
(try_end),
(try_begin),
(agent_get_player_id, ":dead_agent_player", ":dead_agent_no"),
(neg|player_is_active, ":dead_agent_player"),
(assign,":dead_agent_player",-1),
(try_end),
(assign,":kill_type",-1),
(assign,":score_affector",-1),
(assign,":score_affector_team",-1),
(try_begin),
(this_or_next|lt, ":killer_agent_no", 0), #if he killed himself (1a(team change) or 1b(self kill)) then decrease kill counts of killer player by one.
(eq, ":killer_agent_no", ":dead_agent_no"),
(assign,":kill_type",kill_type_self),
(assign,":score_affector",":dead_agent_player"),
(assign,":score_affector_team",":dead_agent_team"),
(else_try), # if he dident kill himself we must have a valid killer, Horses can kill you aswell ^^
(try_begin),
(eq, ":killer_agent_team", ":dead_agent_team"), # Same team
(neq, "$g_multiplayer_game_type", multiplayer_game_type_deathmatch),
(neq, "$g_multiplayer_game_type", multiplayer_game_type_duel),
(neq, "$g_multiplayer_game_type", multiplayer_game_type_scene_making),
(assign,":kill_type",kill_type_team),
(agent_is_human,":killer_agent_no"),
(agent_is_human,":dead_agent_no"),
(agent_is_alive, ":killer_agent_no"),
(str_store_player_username, s2, ":killer_agent_player"),
(str_store_player_username, s3, ":dead_agent_player"),
(str_store_string, s5, "@You have killed a teammate. Please note that teamkilling is not allowed on this server."),
(multiplayer_send_string_to_player, ":killer_agent_player", multiplayer_event_show_server_message, s5),
(str_store_string, s7, "@You have been teamkilled by {s2}."),
(multiplayer_send_string_to_player, ":dead_agent_player", multiplayer_event_show_server_message, s7),
(else_try),
(assign,":kill_type",kill_type_enemy),
#Saxinger begin
try_begin),
(agent_is_human,":killer_agent_no"),
(agent_is_human,":dead_agent_no"),
(agent_is_alive, ":killer_agent_no"),
(neq, ":killer_agent_player", -1),
(str_store_player_username, s2, ":killer_agent_player"),
(str_store_player_username, s3, ":dead_agent_player"),
(try_begin),
(ge, reg61, 5),
(agent_get_position, pos1, ":dead_agent_no"),
(get_distance_between_positions_in_meters, ":distance", pos0, pos1),
(assign, reg61, ":distance"),
(str_store_string, s8, "@You have killed {s3} | Distance {reg61} Meters."),
(multiplayer_send_string_to_player, ":killer_agent_player", multiplayer_event_show_server_message, s8),
(str_store_string, s9, "@You have been killed by {s2}."),
(multiplayer_send_string_to_player, ":dead_agent_player", multiplayer_event_show_server_message, s9),
(agent_get_slot, reg0, ":killer_agent_no", slot_killstreak),
(val_add, reg0, 1),
(agent_set_slot, ":killer_agent_no", slot_killstreak, reg0),
(agent_is_alive, ":killer_agent_no"),
(agent_is_active, ":killer_agent_no"),
(agent_is_human, ":killer_agent_no"),
(agent_get_player_id, ":killer_player", ":killer_agent_no"),
(str_store_player_username, s2, ":killer_player"),
(try_begin),
(agent_slot_eq, ":killer_agent_no", slot_killstreak, 5),
(str_store_string, s0, "str_server_killstreak_5"),
(call_script, "script_cf_server_message_syn"),
(else_try),
(agent_slot_eq, ":killer_agent_no", slot_killstreak, 10),
(str_store_string, s0, "str_server_killstreak_10"),
(call_script, "script_cf_server_message_syn"),
(else_try),
(agent_slot_eq, ":killer_agent_no", slot_killstreak, 15),
(str_store_string, s0, "str_server_killstreak_15"),
(call_script, "script_cf_server_message_syn"),
(else_try),
(agent_slot_eq, ":killer_agent_no", slot_killstreak, 20),
(str_store_string, s0, "str_server_killstreak_20"),
(call_script, "script_cf_server_message_syn"),
(try_end),
(else_try),
(str_store_string, s10, "@You have killed {s3} in combat."),
(multiplayer_send_string_to_player, ":killer_agent_player", multiplayer_event_show_server_message, s10),
(str_store_string, s11, "@You have been killed by {s2}."),
(multiplayer_send_string_to_player, ":dead_agent_player", multiplayer_event_show_server_message, s11),
(agent_get_slot, reg0, ":killer_agent_no", slot_killstreak),
(val_add, reg0, 1),
(agent_is_alive, ":killer_agent_no"),
(agent_is_active, ":killer_agent_no"),
(agent_is_human, ":killer_agent_no"),
(agent_set_slot, ":killer_agent_no", slot_killstreak, reg0),
(try_begin),
(agent_slot_eq, ":killer_agent_no", slot_killstreak, 5),
(str_store_string, s0, "str_server_killstreak_5"),
(call_script, "script_cf_server_message_syn"),
(else_try),
(agent_slot_eq, ":killer_agent_no", slot_killstreak, 10),
(str_store_string, s0, "str_server_killstreak_10"),
(call_script, "script_cf_server_message_syn"),
(else_try),
(agent_slot_eq, ":killer_agent_no", slot_killstreak, 15),
(str_store_string, s0, "str_server_killstreak_15"),
(call_script, "script_cf_server_message_syn"),
(else_try),
(agent_slot_eq, ":killer_agent_no", slot_killstreak, 20),
(str_store_string, s0, "str_server_killstreak_20"),
(call_script, "script_cf_server_message_syn"),
(try_end),
(try_end),
#Saxinger end
(try_end),
(assign,":score_affector",":killer_agent_player"),
(assign,":score_affector_team",":killer_agent_team"),
(try_end),
(try_begin),
(eq, "$g_multiplayer_game_type", multiplayer_game_type_commander), # For commander mode give kills of squad to commander
(agent_is_active,":killer_agent_no"),
(agent_is_human, ":killer_agent_no"),
(agent_is_non_player, ":killer_agent_no"),
(agent_get_group, ":agent_group", ":killer_agent_no"),
(gt,":agent_group",-1),
(player_is_active, ":agent_group"),
(player_get_agent_id, ":killer_agent_no", ":agent_group"),
(assign,":score_affector",":agent_group"),
(try_end),
(gt,":kill_type",-1),
(assign,":score_change",0), # Score + Kills difirence change =)
(try_begin),
(eq,":kill_type",kill_type_enemy),
(assign,":score_change",1),
(else_try),
(this_or_next|eq,":kill_type",kill_type_self),
(eq,":kill_type",kill_type_team),
(assign,":score_change",-1),
(try_end),
(try_begin), #adding 1 score points to agent which kills enemy agent at server
(multiplayer_is_server),
(try_begin), # In battle if we have bots controlled by the died agent then set their group to -1
(eq, "$g_multiplayer_game_type", multiplayer_game_type_battle),
(this_or_next|gt,"$g_multiplayer_num_bots_team_1",0),
(gt,"$g_multiplayer_num_bots_team_2",0),
(player_is_active,":dead_agent_player"),
(try_for_agents, ":cur_agent"),
(agent_is_active,":cur_agent"),
(agent_is_non_player, ":cur_agent"),
(agent_is_human, ":cur_agent"),
(agent_is_alive, ":cur_agent"),
(agent_get_group, ":agent_group", ":cur_agent"),
(eq, ":dead_agent_player", ":agent_group"),
(agent_set_group, ":cur_agent", -1),
(try_end),
(try_end),
(gt,":score_affector",-1),
(try_begin),
(neq,":score_change",0), # it is not 0
(player_get_score, ":score_affector_score", ":score_affector"),
(val_add, ":score_affector_score", ":score_change"),
(player_set_score, ":score_affector", ":score_affector_score"),
(try_end),
(player_is_active,":killer_agent_player"),#Can still be different from score affector if game in commander mode
(try_begin), # Log teamkills if we have a player teamkilling a player
(eq,":kill_type",kill_type_team),
(player_is_active,":dead_agent_player"),
(call_script,"script_multiplayer_server_on_player_teamkilled_player", ":dead_agent_player", ":killer_agent_player", ":dead_agent_team"),
(try_end),
(try_begin),
(this_or_next|eq,":kill_type",kill_type_enemy),
(eq,":kill_type",kill_type_team),
(player_is_active,":dead_agent_player"),
# Bring down ze banhammer
(player_is_admin, ":killer_agent_player"),
(agent_is_active,":killer_agent_no"),
(agent_is_alive,":killer_agent_no"),
(agent_get_wielded_item, ":item", ":killer_agent_no", 0),
(eq, ":item", "itm_banhammer"),
(str_store_player_username, s2, ":killer_agent_player"),
(str_store_player_username, s3, ":dead_agent_player"),
(str_store_string, s4, "str_ban_hammer_s2_s3"),
(call_script, "script_multiplayer_broadcast_message"), # Broadcast banhammer by message
(try_begin),
(player_get_unique_id, ":player_key", ":dead_agent_player"),
(gt,":player_key", 1), # Key auth server problem protection (id 1 if wrong)
(ban_player, ":dead_agent_player", 1, ":killer_agent_player"),
(else_try),
(kick_player, ":dead_agent_player"),
(try_end),
(try_end),
(try_end),
(try_begin),
# if its captain mode and player is dead
(eq, "$g_multiplayer_game_type", multiplayer_game_type_commander),
(eq, "$g_multiplayer_player_respawn_as_bot", 0), #Only if player can't respawn as bot
(agent_is_active,":dead_agent_no"),
(neg|agent_is_non_player, ":dead_agent_no"),
# then reset his squad's orders
#(agent_get_team, ":dead_team_no", ":dead_agent_no"),
(agent_get_player_id, ":dead_player_no", ":dead_agent_no"),
(player_is_active, ":dead_player_no"),
(set_show_messages, 0),
(team_give_order, ":dead_player_no", grc_everyone, mordr_charge),
(team_give_order, ":dead_player_no", grc_everyone, mordr_fire_at_will),
(team_give_order, ":dead_player_no", grc_everyone, mordr_use_any_weapon),
#(team_give_order, ":dead_player_no", grc_everyone, mordr_form_2_row),
(set_show_messages, 1),
(try_end),
(try_begin),
(eq, "$g_multiplayer_game_type", multiplayer_game_type_commander), # For commander mode give kills of squad to commander
(try_begin),
(agent_is_active,":killer_agent_no"),
(agent_is_human, ":killer_agent_no"),
(agent_is_non_player, ":killer_agent_no"),
(agent_get_group, ":agent_group", ":killer_agent_no"),
(gt,":agent_group",-1),
(player_is_active, ":agent_group"),
(player_get_agent_id, ":killer_agent_no", ":agent_group"),
(assign,":killer_agent_player",":agent_group"),
(try_end),
(try_begin),
(agent_is_active,":dead_agent_no"),
(agent_is_human, ":dead_agent_no"),
(agent_is_non_player, ":dead_agent_no"),
(agent_get_group, ":agent_group", ":dead_agent_no"),
(gt,":agent_group",-1),
(player_is_active, ":agent_group"),
(player_get_agent_id, ":dead_agent_no", ":agent_group"),
(assign,":dead_agent_player",":agent_group"),
(try_end),
(try_end),
(try_begin), # assigning Kills Both server + client side.
(neq,":score_change",0), # it is not 0 =P
(try_begin),
(gt,":score_affector",-1), # score affector is a player
(player_get_kill_count, ":score_affector_kills", ":score_affector"),
(val_add, ":score_affector_kills", ":score_change"),
(player_set_kill_count, ":score_affector", ":score_affector_kills"),
(else_try),
(gt,":killer_agent_no",-1),
(agent_is_human, ":killer_agent_no"), # it is a bot not a horse
(team_get_bot_kill_count, ":score_affector_team_bot_kill_count", ":score_affector_team"),
(val_add, ":score_affector_team_bot_kill_count", ":score_change"),
(team_set_bot_kill_count, ":score_affector_team", ":score_affector_team_bot_kill_count"),
(try_end),
(try_end),
(try_begin), # assigning deaths both server + client side.
(player_is_active,":dead_agent_player"), # dead guy is a player
(player_get_death_count, ":dead_agent_player_death_count", ":dead_agent_player"),
(val_add, ":dead_agent_player_death_count", 1),
(player_set_death_count, ":dead_agent_player", ":dead_agent_player_death_count"),
(else_try),
(agent_is_active,":dead_agent_no"),
(agent_is_human, ":dead_agent_no"), # it is a bot not a horse
(team_get_bot_death_count, ":dead_agent_team_bot_death_count", ":dead_agent_team"),
(val_add, ":dead_agent_team_bot_death_count", 1),
(team_set_bot_death_count, ":dead_agent_team", ":dead_agent_team_bot_death_count"),
(try_end),
(try_end),
]),
automatic_server_announcement = (
1, 0, 0, [(multiplayer_is_server),],
[
(val_add,"$counter",1),
(try_begin),
(eq, "$counter", 300), #5 minutes till a servermessage is automatillys send by the server
(store_random_in_range,":message",1,6),
(try_begin),
(eq,":message",1),
(str_store_string, s0, "str_server_message_1"),
(else_try),
(eq,":message",2),
(str_store_string, s0, "str_server_message_2"),
(else_try),
(eq,":message",3),
(str_store_string, s0, "str_server_message_3"),
(else_try),
(eq,":message",4),
(str_store_string, s0, "str_server_message_4"),
(else_try),
(eq,":message",5),
(str_store_string, s0, "str_server_message_5"),
(try_end),
(call_script, "script_cf_server_message_syn"),
(assign, "$counter", 0),
(try_end),
])
("cf_server_message_syn", #script_cf_server_message_syn
[
(get_max_players,":max"),
(try_for_range, ":player_id",0,":max"),
(player_is_active, ":player_id"),
(multiplayer_send_string_to_player, ":player_id",multiplayer_event_show_server_message, s0),
(try_end),
]),
The system should be the same...
AHAHAHAHAHAHAHAHA no. The NW sourcecode, I suspect, contains a lot of unnecessary complication to discourage modders. It also has many engine changes.
Several of the menus need to be edited manually for this to show up. I can't pinpoint exactly where, I never went looking, but I do know that there is a factions file - a spreadsheet style file - in the NW folder that has the faction names. Might have something to do with it. You would also have to add it into every gamemode in module_mission_templates.
Wouldn't it be easier to remove the shooting mode from the muskets in module_items and let the players spawn just with melee muskets? This'd save a lot of admins' time.
Hi im sort of a noob to coding and scripting so i just have a question. I know that coding in terms of NW means changing unit and faction names etc., and am guessing that scripting more has to do with making certain specific events happen, but what are more specifically the main differences between coding and scripting?
To me they're the same.
Hi
It's been few day's that i work to import auto firing script on a Napolenic Module System , i've found the module syste of BF2 who present script of auto firing weapons on Warband but i don't know what take and what is usefull for make it work on NW system.
So i call for help and someone who knows better how to make that.
Suggestion: try to do that yourself and use your knowledge. Read guides on the TW forum, dom't try to have other people to make what you'd like to achieve. Else, you won't learn anything.I'm the one who released that code and i'm talking from experience.