From ee5e72c9975c0a8e66bddd849f6daa897712f570 Mon Sep 17 00:00:00 2001 From: cheapie Date: Fri, 17 Jul 2026 21:03:35 -0500 Subject: Make COP/keyswitches functional in moving cars and misc. entity improvements --- car.lua | 41 ++++++----------------------------------- 1 file changed, 6 insertions(+), 35 deletions(-) (limited to 'car.lua') diff --git a/car.lua b/car.lua index e6bbd8c..87dc8ed 100644 --- a/car.lua +++ b/car.lua @@ -118,47 +118,18 @@ function celevator.car.register(name,defs,size) def.light_source = 9 def.drop = "" if def._cop then - def.on_receive_fields = function(pos,_,fields,player) + def.groups._has_cop = 1 + def.on_rightclick = function(pos,_,player) local meta = core.get_meta(pos) local carid = meta:get_int("carid") - if carid == 0 then return end - local carinfo = core.deserialize(celevator.storage:get_string(string.format("car%d",carid))) - if not carinfo then return end - local playername = player:get_player_name() - local protected = core.is_protected(pos,playername) and not core.check_player_privs(playername,{protection_bypass=true}) - local event = { - type = "cop", - fields = fields, - player = playername, - protected = protected, - } - if fields.alarm then - core.sound_play({name="celevator_alarm"},{pos=pos,max_hear_distance=32,ephemeral=true}) - elseif fields.phone then - core.sound_play({name="celevator_phone"},{pos=pos,gain=0.3,max_hear_distance=8,ephemeral=true}) - end - celevator.controller.run(carinfo.controllerpos,event) + if carid ~= 0 then celevator.drives.entity.coprightclick(carid,player,pos) end end elseif def._keyswitches then - def.on_receive_fields = function(pos,_,fields,player) - if fields.quit then return end + def.groups._has_keyswitches = 1 + def.on_rightclick = function(pos,_,player) local meta = core.get_meta(pos) local carid = meta:get_int("carid") - if carid == 0 then return end - local carinfo = core.deserialize(celevator.storage:get_string(string.format("car%d",carid))) - if not carinfo then return end - local playername = player:get_player_name() - if core.is_protected(pos,playername) and not core.check_player_privs(playername,{protection_bypass=true}) then - core.chat_send_player(playername,S("You don't have access to these switches.")) - core.record_protection_violation(pos,playername) - return - end - local event = { - type = "copswitches", - fields = fields, - player = name, - } - celevator.controller.run(carinfo.controllerpos,event) + if carid ~= 0 then celevator.drives.entity.keyswitchrightclick(carid,player,pos) end end end if def._cartopbox then -- cgit v1.2.3