diff options
| author | Ritabrata Das <[email protected]> | 2025-02-20 14:48:31 +0530 |
|---|---|---|
| committer | Ritabrata Das <[email protected]> | 2025-02-20 14:48:31 +0530 |
| commit | dbc52a5e0337cfe8a040ac77117b788b49ef46db (patch) | |
| tree | b5eb15df47132b3730c6a92b57a69160dfb1824c /plugins | |
| parent | 2546a64a649464868bd1332d4308018c9beffb3b (diff) | |
Add being same IFF to refueling
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/refuel.py | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/plugins/refuel.py b/plugins/refuel.py index 1b33031..12af66a 100644 --- a/plugins/refuel.py +++ b/plugins/refuel.py @@ -23,6 +23,7 @@ class Plugin: self.plugin_manager.register_command('refuel', self.refuel) self.plugin_manager.register_command('refueler', self.refueler) self.plugin_manager.register_hook('on_flight_data', self.on_flight_data) + self.plugin_manager.register_hook('on_unjoin', self.on_unjoin) def refueler(self, full_message, player, message_to_client, message_to_server): if player in refueling: @@ -32,7 +33,7 @@ class Plugin: a = YSchat.message("You are no more refueling!") refuelers.pop(player) else: - a = YSchat.message(f"You are now refueling other players! To refuel the plane must be within {REFUEL_RADIUS}m") + a = YSchat.message(f"You are now refueling other players! To refuel the plane must be within {REFUEL_RADIUS}m and have same IFF") refuelers[player] = [0, [], False] message_to_client.append(a) @@ -46,7 +47,7 @@ class Plugin: a = YSchat.message("You are no more refueling!") refueling.pop(player) else: - a = YSchat.message(f"You can now be refueled by other players! To refuel the plane must be within {REFUEL_RADIUS}m") + a = YSchat.message(f"You can now be refueled by other players! To refuel the plane must be within {REFUEL_RADIUS}m and have same IFF") refueling[player] = [0, []] message_to_client.append(a) @@ -54,23 +55,24 @@ class Plugin: decode = FSNETCMD_AIRPLANESTATE(data) if player in refueling: for refueler in refuelers: - refueling[player] = [decode.fuel, decode.position] - if self.in_range(refuelers[refueler][1], decode.position): - refuelers[refueler][2] = True - max_lim = int((player.aircraft.initial_config['WEIGFUEL'])[:-2]) - if decode.fuel < max_lim: - a = FSNETCMD_AIRCMD.set_command(player.aircraft.id, "INITFUEL", f"{decode.fuel+FUEL_RATE}kg", True) - message_to_client.append(a) - elif decode.fuel >= max_lim: - a = YSchat.message("The plane is full!") - refuelers[refueler][2] = False # No longer refueling - message_to_client.append(a) + if refueler.iff == player.iff: + refueling[player] = [decode.fuel, decode.position] + if self.in_range(refuelers[refueler][1], decode.position): + refuelers[refueler][2] = True + max_lim = int((player.aircraft.initial_config['WEIGFUEL'])[:-2]) + if decode.fuel < max_lim: + a = FSNETCMD_AIRCMD.set_command(player.aircraft.id, "INITFUEL", f"{decode.fuel+FUEL_RATE}kg", True) + message_to_client.append(a) + elif decode.fuel >= max_lim: + a = YSchat.message("The plane is full!") + refuelers[refueler][2] = False # No longer refueling + message_to_client.append(a) - if refuelers[refueler][0] < FUEL_RATE: - a = YSchat.message("The refueler ran out of fuel!") - message_to_client.append(a) - else: - refuelers[refueler][2] = False # No longer refueling + if refuelers[refueler][0] < FUEL_RATE: + a = YSchat.message("The refueler ran out of fuel!") + message_to_client.append(a) + else: + refuelers[refueler][2] = False # No longer refueling elif player in refuelers: @@ -80,6 +82,13 @@ class Plugin: message_to_client.append(a) return True + def on_unjoin(self, data, player, message_to_client, message_to_server): + if player in refuelers: + refuelers.pop(player) + elif player in refueling: + refueling.pop(player) + return True + @staticmethod def in_range(refueler_cord:list, refueled_cord:list): # the plane to be refueled must be below and behind the |
