aboutsummaryrefslogtreecommitdiff
path: root/advtrains/advtrains/wagons.lua
diff options
context:
space:
mode:
authororwell96 <mono96.mml@gmail.com>2017-04-09 15:15:45 +0200
committerorwell96 <mono96.mml@gmail.com>2017-04-09 15:17:51 +0200
commitfe8794b353fb3841168eb27f8bbc6c6b13f30098 (patch)
tree186960f0cc427543f83a54906c73b19b9162f1df /advtrains/advtrains/wagons.lua
parent4ea222fd6a2871b608cb100fd71daf6e14cba8bc (diff)
downloadadvtrains-fe8794b353fb3841168eb27f8bbc6c6b13f30098.tar.gz
advtrains-fe8794b353fb3841168eb27f8bbc6c6b13f30098.tar.bz2
advtrains-fe8794b353fb3841168eb27f8bbc6c6b13f30098.zip
Add privilege for basic train operation.
This privilege is granted to singleplayer by default, but is not granted on servers. This prevents unexperienced or evil players from breaking automatic train operation on servers.
Diffstat (limited to 'advtrains/advtrains/wagons.lua')
-rw-r--r--advtrains/advtrains/wagons.lua10
1 files changed, 8 insertions, 2 deletions
diff --git a/advtrains/advtrains/wagons.lua b/advtrains/advtrains/wagons.lua
index 28de3fa..15a0ec7 100644
--- a/advtrains/advtrains/wagons.lua
+++ b/advtrains/advtrains/wagons.lua
@@ -8,6 +8,11 @@ minetest.register_privilege("train_remove", {
description = "Player can remove trains not owned by player",
give_to_singleplayer= false,
});
+minetest.register_privilege("train_operator", {
+ description = "Player may operate trains and switch signals. Given by default. Revoke to prevent players from griefing automated subway systems.",
+ give_to_singleplayer= true,
+ default= true,
+});
local wagon={
collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
@@ -242,7 +247,8 @@ function wagon:on_step(dtime)
--driver control
for seatno, seat in ipairs(self.seats) do
local driver=self.seatp[seatno] and minetest.get_player_by_name(self.seatp[seatno])
- if seat.driving_ctrl_access and driver then
+ local has_driverstand=seat.driving_ctrl_access and self.seatp[seatno] and minetest.check_player_privs(self.seatp[seatno], {train_operator=true})
+ if has_driverstand and driver then
advtrains.update_driver_hud(driver:get_player_name(), self:train(), self.wagon_flipped)
elseif driver then
--only show the inside text
@@ -253,7 +259,7 @@ function wagon:on_step(dtime)
local pc=driver:get_player_control()
self.seatpc[seatno]=driver:get_player_control_bits()
- if seat.driving_ctrl_access then
+ if has_driverstand then
--regular driver stand controls
advtrains.on_control_change(pc, self:train(), self.wagon_flipped)
else