diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/chat_weather_setter.py | 54 | ||||
| -rw-r--r-- | plugins/command_test.py | 26 | ||||
| -rw-r--r-- | plugins/over_g_damage.py | 7 | ||||
| -rw-r--r-- | plugins/smoke_on_damage/Plugin.py | 22 |
4 files changed, 93 insertions, 16 deletions
diff --git a/plugins/chat_weather_setter.py b/plugins/chat_weather_setter.py index 4bcdf0b..5b31a38 100644 --- a/plugins/chat_weather_setter.py +++ b/plugins/chat_weather_setter.py @@ -11,9 +11,56 @@ class Plugin: def register(self, plugin_manager): self.plugin_manager = plugin_manager - self.plugin_manager.register_hook('on_chat', self.on_chat) + #self.plugin_manager.register_hook('on_chat', self.on_chat) self.plugin_manager.register_hook('on_environment_server', self.on_environment) + self.plugin_manager.register_command('fog', self.fog) + self.plugin_manager.register_command('sky', self.sky) + self.plugin_manager.register_command('time', self.time) + self.plugin_manager.register_command('vis', self.visibility) + def fog(self, full_message, player, message_to_client, message_to_server): + try: + args = list(map(int, full_message[4:].split(','))) + except: + message_to_client.append(FSNETCMD_TEXTMESSAGE.encode("Invalid fog argument, usage /fog r,g,b", True)) + return + fog_colour_packet = FSNETCMD_FOGCOLOR.encode(args[0], args[1], args[2], True) + message_to_client.append(fog_colour_packet) + + def sky(self, full_message, player, message_to_client, message_to_server): + try: + args = list(map(int, full_message[4:].split(','))) + except Exception as e: + message_to_client.append(FSNETCMD_TEXTMESSAGE.encode("Invalid sky argument, usage /sky r,g,b", True)) + return True + sky_colour_packet = FSNETCMD_SKYCOLOR.encode(args[0], args[1], args[2], True) + message_to_client.append(sky_colour_packet) + return True + + def time(self, full_message, player, message_to_client, message_to_server): + requested = full_message[6:].lower() + if requested == 'day' and self.initialWeather: + packet = FSNETCMD_ENVIRONMENT.set_time(self.initialWeather.buffer, False, True) + self.initialWeather = FSNETCMD_ENVIRONMENT(packet[4:]) + message_to_client.append(packet) + + elif requested == 'night' and self.initialWeather: + packet = FSNETCMD_ENVIRONMENT.set_time(self.initialWeather.buffer, True, True) + self.initialWeather = FSNETCMD_ENVIRONMENT(packet[4:]) + message_to_client.append(packet) + + else: + message_to_client.append(FSNETCMD_TEXTMESSAGE.encode("Invalid time argument, usage /time night or /time day", True)) + return True + + def visibility(self, full_message, player, message_to_client, message_to_server): + visibility = int(full_message[4:]) + returnpacket = FSNETCMD_ENVIRONMENT.set_visibility(self.initialWeather.buffer, visibility, True) + self.initialWeather = FSNETCMD_ENVIRONMENT(returnpacket[4:]) + message_to_client.append(returnpacket) + return True + + """ def on_chat(self, data, player, messages_to_client, *args): if ENABLED: message = FSNETCMD_TEXTMESSAGE(data).message @@ -44,9 +91,10 @@ class Plugin: self.initialWeather = FSNETCMD_ENVIRONMENT(returnpacket[4:]) messages_to_client.append(returnpacket) return False + """ + def on_environment(self, data, *args): """Store the initial weather packet for the server.""" - if ENABLED: - self.initialWeather = FSNETCMD_ENVIRONMENT(data) + self.initialWeather = FSNETCMD_ENVIRONMENT(data) return True diff --git a/plugins/command_test.py b/plugins/command_test.py new file mode 100644 index 0000000..6d8e8af --- /dev/null +++ b/plugins/command_test.py @@ -0,0 +1,26 @@ +""" +This is an example test command! +""" + +from lib import YSchat +from time import sleep + +ENABLED = False + +class Plugin: + def __init__(self): + self.plugin_manager = None + + def register(self, plugin_manager): + self.plugin_manager = plugin_manager + self.plugin_manager.register_command('test', self.test) + self.plugin_manager.register_command('timer', self.timer) + + def test(self, full_message, player, message_to_client, message_to_server): + message_to_client.append(YSchat.message("Test command received")) + return True + + def timer(self, full_message, player, message_to_client, message_to_server): + sleep(5) + message_to_client.append(YSchat.message("Timer ended")) + return True diff --git a/plugins/over_g_damage.py b/plugins/over_g_damage.py index aa44ca8..50c1b21 100644 --- a/plugins/over_g_damage.py +++ b/plugins/over_g_damage.py @@ -3,7 +3,10 @@ it exceeds the g-force limit set in the config file.""" from lib.PacketManager.packets import FSNETCMD_GETDAMAGE, FSNETCMD_TEXTMESSAGE from config import G_LIM import time -ENABLED = True + +# CONFIG +ENABLED = True # Enable or disable the plugin +INTERVAL = 0.3 # Interval of second before G Limit check is enforced class Plugin: def __init__(self): @@ -16,7 +19,7 @@ class Plugin: def on_receive(self, data, player, messages_to_client, *args): if ENABLED: if abs(player.aircraft.last_packet.g_value)> G_LIM: - if time.time() - player.aircraft.last_over_g_message > 1: # Only send every second. + if time.time() - player.aircraft.last_over_g_message > INTERVAL: player.aircraft.last_over_g_message = time.time() damage_packet = FSNETCMD_GETDAMAGE.encode(player.aircraft.id, 1, 1, diff --git a/plugins/smoke_on_damage/Plugin.py b/plugins/smoke_on_damage/Plugin.py index e6c57e2..08c184b 100644 --- a/plugins/smoke_on_damage/Plugin.py +++ b/plugins/smoke_on_damage/Plugin.py @@ -16,30 +16,30 @@ class Plugin: self.plugin_manager.register_hook('on_weapon_config', self.on_weapon_config) def on_flight_data(self, data, player,message_to_client, message_to_server): - """After the initial incoming flight packet, check whether + """After the initial incoming flight packet, check whether the health is below the threshold, if so add smoke""" - if ENABLED and SMOKE_PLANE and player.aircraft.life<SMOKE_LIFE: - + if SMOKE_PLANE and player.aircraft.life<SMOKE_LIFE: + #Add smoke to the plane smoke_packet = FSNETCMD_AIRPLANESTATE(data).smoke() #forward it on to the server - + message_to_server.append(smoke_packet) - - - + + + if not player.aircraft.damage_engine_warn_sent: player.aircraft.damage_engine_warn_sent = True #Warn the player message = "Your engine has been damaged! You can't turn on your afterburner!" message_to_client.append(FSNETCMD_TEXTMESSAGE.encode(message,True)) - + debug(f"Engine damage warning sent to {player.username}") - + message_to_client.append(FSNETCMD_AIRCMD.set_afterburner(player.aircraft.id, False, True)) - + return False - + def on_weapon_config(self, data, player, message_to_client, message_to_server): if ENABLED: player.aircraft.just_repaired = True |
