Hello fellow modders, I have been modding for some quite time and I haven't able to solve this issue. Issue is when I scale a scene prop in multiplayer via scripts after mission started their textures doesn't scale and physics of the object get messy. Question is how can I prevent physics get messy and how can I make textures scale too? Here is my code of work for that you can test it yourself on a dedicated server. Thanks in advance.
module_scripts.py:
module_mission_templates.py
module_scene_props.py
module_scripts.py:
Code:
("spawn_boundaries",
[
(init_position, pos0),
(get_scene_boundaries, pos1, pos2),
(position_get_x, ":pos1x",pos1),
(position_get_x, ":x", pos2),
(val_add, ":x", ":pos1x"),
(val_div, ":x", 2),
(position_get_x, ":pos1y",pos1),
(position_get_y, ":y", pos2),
(val_add, ":y", ":pos1y"),
(val_div, ":y", 2),
(try_for_range, ":count", 0, 4),
(try_begin),
(eq, ":count", 0), #north
(store_mul, ":newy", ":y", 2),
(store_div, ":minusy", ":newy", 8),
(val_sub, ":newy", ":minusy"),
(position_set_x, pos0, ":x"),
(position_set_y, pos0, ":newy"),
(position_set_z_to_ground_level, pos0),
(set_spawn_position, pos0),
(spawn_scene_prop, "spr_barrier_20m"),
(prop_instance_get_scale, pos1, reg0),
(position_get_x, reg1, pos1),
(val_mul, reg1, 100),
(position_get_y, reg2, pos1),
(position_get_z, reg3, pos1),
(val_mul, reg3, 100),
(position_set_scale_x, pos1, reg1),
(position_set_scale_z, pos1, reg3),
(prop_instance_set_scale, reg0, pos1, pos1, pos1),
(prop_instance_set_position, reg0, pos0),
(else_try),
(eq, ":count", 1), #east
(store_mul, ":newx", ":x", 2),
(store_div, ":minusx", ":newx", 8),
(val_sub, ":newx", ":minusx"),
(position_set_x, pos0, ":newx"),
(position_set_y, pos0, ":y"),
(position_set_z_to_ground_level, pos0),
(set_spawn_position, pos0),
(spawn_scene_prop, "spr_barrier_20m"),
(prop_instance_get_scale, pos1, reg0),
(position_get_x, reg1, pos1),
(position_get_y, reg2, pos1),
(val_mul, reg2, 100),
(position_get_z, reg3, pos1),
(val_mul, reg3, 100),
(position_set_scale_y, pos1, reg2),
(position_set_scale_z, pos1, reg3),
(prop_instance_set_scale, reg0, pos1, pos1, pos1),
(prop_instance_set_position, reg0, pos0),
(else_try),
(eq, ":count", 2), #south
(store_mul, ":newy", ":y", 2),
(val_div, ":newy", 16),
(position_set_x, pos0, ":x"),
(position_set_y, pos0, ":newy"),
(position_set_z_to_ground_level, pos0),
(set_spawn_position, pos0),
(spawn_scene_prop, "spr_barrier_20m"),
(prop_instance_get_scale, pos1, reg0),
(position_get_x, reg1, pos1),
(val_mul, reg1, 100),
(position_get_y, reg2, pos1),
(position_get_z, reg3, pos1),
(val_mul, reg3, 100),
(position_set_scale_x, pos1, reg1),
(position_set_scale_z, pos1, reg3),
(prop_instance_set_scale, reg0, pos1, pos1, pos1),
(prop_instance_set_position, reg0, pos0),
(else_try),
(eq, ":count", 3), #west
(store_mul, ":newx", ":x", 2),
(val_div, ":newx", 16),
(position_set_x, pos0, ":newx"),
(position_set_y, pos0, ":y"),
(position_set_z_to_ground_level, pos0),
(set_spawn_position, pos0),
(spawn_scene_prop, "spr_barrier_20m"),
(prop_instance_get_scale, pos1, reg0),
(position_get_x, reg1, pos1),
(position_get_y, reg2, pos1),
(val_mul, reg2, 100),
(position_get_z, reg3, pos1),
(val_mul, reg3, 100),
(position_set_scale_y, pos1, reg2),
(position_set_scale_z, pos1, reg3),
(prop_instance_set_scale, reg0, pos1, pos1, pos1),
(prop_instance_set_position, reg0, pos0),
(try_end),
(try_end),
]),
module_mission_templates.py
Code:
(ti_after_mission_start, 0, 0, [],
[
(try_begin),
(multiplayer_is_server),
(call_script, "script_spawn_skyboxes"),
(call_script, "script_spawn_boundaries"),
(try_end),
(try_begin),
(neg^multiplayer_is_server),
(try_end),
])
module_scene_props.py
Code:
boundary_triggers = [
(ti_on_scene_prop_use, [
(store_trigger_param_1, ":agent_id"),
(store_trigger_param_2, ":instance"),
(multiplayer_send_int_to_server, client_event_migration, ":agent_id"),
]),
]
scene_props = [
# native skyboxes
("skybox_cloudy_day", 0, "skybox_cloud_1", "0", skybox_triggers),
("skybox_rainy_day", 0, "skybox_cloud_2", "0", skybox_triggers),
("skybox_clear_day", 0, "skybox_clearday", "0", skybox_triggers),
("skybox_clear_night", 0, "skybox_night_1", "0", skybox_triggers),
("skybox_cloudy_night", 0, "skybox_night_2", "0", skybox_triggers),
("skybox_sunset", 0, "skybox_sunset_1", "0", skybox_triggers),
# native skyboxes
#("barrier_20m", 0, "barrier_20m", "bo_barrier_20m", boundary_triggers),
("barrier_20m", sokf_moveable, "barrier_20m", "bo_barrier_20m", boundary_triggers),
]
])
Last edited: