aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/over_g_damage.py2
-rw-r--r--plugins/refuel.py53
2 files changed, 36 insertions, 19 deletions
diff --git a/plugins/over_g_damage.py b/plugins/over_g_damage.py
index 89e295b..50c1b21 100644
--- a/plugins/over_g_damage.py
+++ b/plugins/over_g_damage.py
@@ -5,7 +5,7 @@ from config import G_LIM
import time
# CONFIG
-ENABLED = False # Enable or disable the plugin
+ENABLED = True # Enable or disable the plugin
INTERVAL = 0.3 # Interval of second before G Limit check is enforced
class Plugin:
diff --git a/plugins/refuel.py b/plugins/refuel.py
index bd12a10..1b33031 100644
--- a/plugins/refuel.py
+++ b/plugins/refuel.py
@@ -3,61 +3,80 @@ This plugin enables you to perform air to air refueling.
"""
import math
from lib.PacketManager.packets import FSNETCMD_AIRCMD, FSNETCMD_AIRPLANESTATE
+from lib import YSchat
ENABLED = True
-REFUEL_RADIUS = 100 # in meters
+REFUEL_RADIUS = 500
+# in meters, recomended to set +100-200m more than
+# required range to compensate for distance lag caused by network.
+FUEL_RATE = 50 # in kg/s (aprroximately a second, timing is not accurate)
refuelers = {}
refueling = {}
class Plugin:
def __init__(self):
- def __init__(self):
- self.plugin_manager = None
+ self.plugin_manager = None
def register(self, plugin_manager):
self.plugin_manager = plugin_manager
self.plugin_manager.register_command('refuel', self.refuel)
- self.plugin_manager.register_command('k', self.refueler)
+ self.plugin_manager.register_command('refueler', self.refueler)
self.plugin_manager.register_hook('on_flight_data', self.on_flight_data)
def refueler(self, full_message, player, message_to_client, message_to_server):
- if player in refuelers:
+ if player in refueling:
+ a = YSchat.message("You cannot be refueled while being a refueler")
+
+ elif player in refuelers:
+ 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")
refuelers[player] = [0, [], False]
+ message_to_client.append(a)
def refuel(self, full_message, player, message_to_client, message_to_server):
#a = FSNETCMD_AIRCMD.set_command(player.aircraft.id, "INITFUEL", "3750kg", True)
#message_to_client.append(a)
#print(player in refueling)
- if player in refueling:
+ if player in refuelers:
+ a = YSchat.message("You cannot be a refueler while being refueled")
+ elif player in refueling:
+ 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")
refueling[player] = [0, []]
+ message_to_client.append(a)
def on_flight_data(self, data, player, message_to_client, message_to_server):
decode = FSNETCMD_AIRPLANESTATE(data)
- print(player.username, decode.position)
- print(refuelers, refueling)
if player in refueling:
- for player in refuelers:
+ for refueler in refuelers:
refueling[player] = [decode.fuel, decode.position]
- if self.in_range(refuelers[player][1], decode.position):
- print("here!")
- refuelers[player][2] = True
+ 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+100}kg", True)
+ 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[player][2] = False
+ refuelers[refueler][2] = False # No longer refueling
elif player in refuelers:
refuelers[player] = [decode.fuel, decode.position, refuelers[player][2]]
- if decode.fuel-100 > 0 and refuelers[player][2]:
- a = FSNETCMD_AIRCMD.set_command(player.aircraft.id, "INITFUEL", f"{decode.fuel-5}kg", True)
+ if decode.fuel-FUEL_RATE > 0 and refuelers[player][2]:
+ a = FSNETCMD_AIRCMD.set_command(player.aircraft.id, "INITFUEL", f"{decode.fuel-FUEL_RATE}kg", True)
message_to_client.append(a)
return True
@@ -67,9 +86,7 @@ class Plugin:
# refueler plane, ysf sends cords in list[x, y, z]
# implement this later
# for now we just use distance formula in a 3d space
- print(refueler_cord, refueled_cord)
dist = math.sqrt((refueler_cord[0]-refueled_cord[0])**2 + (refueler_cord[1]-refueled_cord[1])**2 + (refueler_cord[2]-refueled_cord[2])**2)
- print(dist)
if dist < REFUEL_RADIUS:
return True
else: