Jump to content
Message added by realedwin,

 

This plugin is compatible with both Carbon & Oxide (as of v2.0.6011).


If you encounter a bug or problem with this plugin, it is a good idea to report it. When reporting a bug, please be as descriptive as possible so that it can be addressed more quickly and is more likely to be fixed. Please state whether you are using Carbon or Oxide and which version.

 

2 Screenshots

Recommended Comments



CsaszyKJ

Posted

Seen it, which I really appreciate it!

HunterZ

Posted

Not sure if I believe it, but someone on my server got raided when the base owners were offline, and the raiders claimed they pulled it off via a combination of MLRS and baiting patrol helicopter. Does or could this mod protect from damage caused by those?

realedwin

Posted

On 12/26/2023 at 6:28 PM, HunterZ said:

Not sure if I believe it, but someone on my server got raided when the base owners were offline, and the raiders claimed they pulled it off via a combination of MLRS and baiting patrol helicopter. Does or could this mod protect from damage caused by those?

There is only protection from other players.

 

If a player leaves the MLRS vehicle immediately, only 1 missile won't do any damage. If a player stays in the vehicle, it won't do any damage. This bug has been around for years.

HunterZ

Posted

7 hours ago, realedwin said:

There is only protection from other players.

 

If a player leaves the MLRS vehicle immediately, only 1 missile won't do any damage. If a player stays in the vehicle, it won't do any damage. This bug has been around for years.

Okay, I think what I'm asking then is for an option to also apply damage mitigation when the source doesn't trace back to a player. I don't know Rust/Oxide API or performance considerations very well yet, but it seems that this could work:

  • have `OnEntityTakeDamage()` allow the `OnStructureAttack()` call to go through when `hitInfo.InitiatorPlayer is null`
  • have `OnStructureAttack()` skip the `authorizedPlayers.Contains(hitInfo.InitiatorPlayer.userID)` check when `hitInfo.InitiatorPlayer is null`
  • Like 1
JackMachine

Posted

Hi!
This plugin looks awesome but I don't know why I can make it work.

  • I added the offlineraidprotection protect permission to my Default Group and Admin Group.
  • I put the  "Protect all prefabs": to TRUE,
  • We added a toolbox, 
  • We built some structures AFTER the plugin is activated and permissions properly setted.
  • We built structure after disconnect / reconnect AFTER the plugin is activated and permissions properly setted.

I tested a raid with another admin and regular players but everyone can raid.
No message, no protection, and raid protection check for protected players are OK, it shows damage scale at 0%

I don't know if I forgot to do something, but if not, the plugin don't seems to work for me.
It's too bad, because a lot of work seems to be done on this plugin and the result is really cool for a PVE serrver.

If anyone have an idea ....


Happy new year!

realedwin

Posted

18 hours ago, Jack said:

Hi!
This plugin looks awesome but I don't know why I can make it work.

  • I added the offlineraidprotection protect permission to my Default Group and Admin Group.
  • I put the  "Protect all prefabs": to TRUE,
  • We added a toolbox, 
  • We built some structures AFTER the plugin is activated and permissions properly setted.
  • We built structure after disconnect / reconnect AFTER the plugin is activated and permissions properly setted.

I tested a raid with another admin and regular players but everyone can raid.
No message, no protection, and raid protection check for protected players are OK, it shows damage scale at 0%

I don't know if I forgot to do something, but if not, the plugin don't seems to work for me.
It's too bad, because a lot of work seems to be done on this plugin and the result is really cool for a PVE serrver.

If anyone have an idea ....


Happy new year!

What does your configuration file look like?

There is protection when all authorised players are offline.

JackMachine

Posted

On 1/1/2024 at 12:04 PM, realedwin said:

What does your configuration file look like?

There is protection when all authorised players are offline.

Hi realedwin,

Thank you to your answer.


This is my config file :

 

{
  "Raid Protection Options": {
    "Scale of damage depending on the current hour of the real day": {},
    "Scale of damage depending on the offline time in hours": {
      "12": 0.0,
      "24": 0.0,
      "48": 0.0
    },
    "Cooldown in minutes": 1,
    "Scale of damage between the cooldown and the first configured time": 0.0,
    "Protect all prefabs": true,
    "Protect vehicles": true,
    "Prefabs to protect": [
      "abovegroundpool.deployed",
      "advendcalendar.deployed",
      "andswitch.entity",
      "audioalarm",
      "autoturret_deployed",
      "barricade.concrete",
      "barricade.cover.wood",
      "barricade.metal",
      "barricade.sandbags",
      "barricade.stone",
      "barricade.wood",
      "barricade.woodwire",
      "bathtub.planter.deployed",
      "bbq.deployed",
      "beachchair.deployed",
      "beachparasol.deployed",
      "beachtable.deployed",
      "beachtowel.deployed",
      "beartrap",
      "bed_deployed",
      "black_berry.entity",
      "blue_berry.entity",
      "boogieboard.deployed",
      "boombox.deployed",
      "box.wooden.large",
      "button",
      "cabletunnel",
      "campfire",
      "cardtable.deployed",
      "carvable.pumpkin",
      "cctv_deployed",
      "ceilinglight.deployed",
      "chair.deployed",
      "chair.icethrone",
      "chineselantern.deployed",
      "chippyarcademachine",
      "christmas_door_wreath_deployed",
      "clantable.deployed",
      "coffinstorage",
      "composter",
      "computerstation.deployed",
      "confetticannon.deployed",
      "connectedspeaker.deployed",
      "corn.entity",
      "counter",
      "cupboard.tool.deployed",
      "cursedcauldron.deployed",
      "discoball.deployed",
      "discofloor.deployed",
      "discofloor.largetiles.deployed",
      "door.double.hinged.bardoors",
      "door.double.hinged.metal",
      "door.double.hinged.toptier",
      "door.double.hinged.wood",
      "door.hinged.industrial.a",
      "door.hinged.industrial.d",
      "door.hinged.metal",
      "door.hinged.toptier",
      "door.hinged.wood",
      "doorcloser",
      "doorcontroller.deployed",
      "doorgarland.deployed",
      "double_doorgarland.deployed",
      "dragondoorknocker.deployed",
      "drone.deployed",
      "dropbox.deployed",
      "drumkit.deployed",
      "easter_door_wreath_deployed",
      "electric.flasherlight.deployed",
      "electric.sirenlight.deployed",
      "electric.sprinkler.deployed",
      "electric.windmill.small",
      "electrical.blocker.deployed",
      "electrical.branch.deployed",
      "electrical.combiner.deployed",
      "electrical.heater",
      "electrical.memorycell.deployed",
      "electrical.modularcarlift.deployed",
      "electrical.random.switch.deployed",
      "electricfurnace.deployed",
      "elevator",
      "fireplace.deployed",
      "fishtrophy.deployed",
      "flameturret.deployed",
      "floor.grill",
      "floor.ladder.hatch",
      "floor.triangle.grill",
      "floor.triangle.ladder.hatch",
      "fluid.combiner.deployed",
      "fluidsplitter",
      "fluidswitch",
      "fogmachine",
      "frankensteintable.deployed",
      "fridge.deployed",
      "frontiermirror.large",
      "frontiermirror.medium",
      "frontiermirror.small",
      "frontiermirror.standing",
      "furnace",
      "furnace.large",
      "gates.external.high.stone",
      "gates.external.high.wood",
      "generator.small",
      "giantcandycane.deployed",
      "giantlollipops.deployed",
      "goldframe.large",
      "goldframe.medium",
      "goldframe.small",
      "goldframe.standing",
      "goldmirror.large",
      "goldmirror.medium",
      "goldmirror.small",
      "goldmirror.standing",
      "gravestone.stone.deployed",
      "gravestone.wood.deployed",
      "graveyardfence",
      "green_berry.entity",
      "guntrap.deployed",
      "hbhfsensor.deployed",
      "hemp.entity",
      "hitchtrough.deployed",
      "hobobarrel.deployed",
      "huntingtrophylarge.deployed",
      "huntingtrophysmall.deployed",
      "icewall",
      "igniter.deployed",
      "industrial.wall.lamp.deployed",
      "industrial.wall.lamp.green.deployed",
      "industrial.wall.lamp.red.deployed",
      "industrialcombiner.deployed",
      "industrialconveyor.deployed",
      "industrialcrafter.deployed",
      "industrialsplitter.deployed",
      "innertube.deployed",
      "innertube.horse.deployed",
      "innertube.unicorn.deployed",
      "jackolantern.angry",
      "jackolantern.happy",
      "kayak",
      "ladder.wooden.wall",
      "landmine",
      "lantern.deployed",
      "large.rechargable.battery.deployed",
      "largecandleset",
      "laserdetector",
      "laserlight.deployed",
      "legacy.shelter.wood.deployed",
      "legacy_furnace",
      "lightupframe.large",
      "lightupframe.medium",
      "lightupframe.small",
      "lightupframe.standing",
      "lightupmirror.large",
      "lightupmirror.medium",
      "lightupmirror.small",
      "lightupmirror.standing",
      "lock.code",
      "lock.key",
      "locker.deployed",
      "mailbox.deployed",
      "medium.rechargable.battery.deployed",
      "microphonestand.deployed",
      "minecart.planter.deployed",
      "mining.pumpjack",
      "mining_quarry",
      "mixingtable.deployed",
      "mortarblue",
      "mortarchampagne",
      "mortargreen",
      "mortarorange",
      "mortarpattern",
      "mortarred",
      "mortarviolet",
      "newyeargong.deployed",
      "orswitch.entity",
      "paddlingpool.deployed",
      "photoframe.landscape",
      "photoframe.large",
      "photoframe.portrait",
      "piano.deployed",
      "pinata.deployed",
      "planter.large.deployed",
      "planter.small.deployed",
      "pookie_deployed",
      "potato.entity",
      "poweredwaterpurifier.deployed",
      "pressurepad.deployed",
      "ptz_cctv_deployed",
      "pumpkin.entity",
      "railroadplanter.deployed",
      "reactivetarget_deployed",
      "red_berry.entity",
      "refinery_small_deployed",
      "repairbench_deployed",
      "researchtable_deployed",
      "rfbroadcaster",
      "rfreceiver",
      "rockingchair.deployed",
      "rockingchair.rockingchair2.deployed",
      "rockingchair.rockingchair3.deployed",
      "romancandle",
      "romancandle-blue",
      "romancandle-green",
      "romancandle-violet",
      "rug.bear.deployed",
      "rug.deployed",
      "rustigeegg_a.deployed",
      "rustigeegg_b.deployed",
      "rustigeegg_c.deployed",
      "rustigeegg_d.deployed",
      "rustigeegg_e.deployed",
      "rustigeegg_f.deployed",
      "sam_site_turret_deployed",
      "scarecrow.deployed",
      "scrapframe.large",
      "scrapframe.medium",
      "scrapframe.small",
      "scrapframe.standing",
      "scrapmirror.large",
      "scrapmirror.medium",
      "scrapmirror.small",
      "scrapmirror.standing",
      "searchlight.deployed",
      "secretlabchair.deployed",
      "shelves",
      "shutter.metal.embrasure.a",
      "shutter.metal.embrasure.b",
      "shutter.wood.a",
      "sign.hanging",
      "sign.hanging.banner.large",
      "sign.hanging.ornate",
      "sign.huge.wood",
      "sign.large.wood",
      "sign.medium.wood",
      "sign.neon.125x125",
      "sign.neon.125x215",
      "sign.neon.125x215.animated",
      "sign.neon.xl",
      "sign.neon.xl.animated",
      "sign.pictureframe.landscape",
      "sign.pictureframe.portrait",
      "sign.pictureframe.tall",
      "sign.pictureframe.xl",
      "sign.pictureframe.xxl",
      "sign.pole.banner.large",
      "sign.post.double",
      "sign.post.single",
      "sign.post.town",
      "sign.post.town.roof",
      "sign.small.wood",
      "simplelight",
      "skull_door_knocker.deployed",
      "skull_fire_pit",
      "skullspikes.candles.deployed",
      "skullspikes.deployed",
      "skullspikes.pumpkin.deployed",
      "skulltrophy.deployed",
      "skulltrophy.jar.deployed",
      "skulltrophy.jar2.deployed",
      "skulltrophy.table.deployed",
      "skylantern.deployed",
      "skylantern.skylantern.green",
      "skylantern.skylantern.orange",
      "skylantern.skylantern.purple",
      "skylantern.skylantern.red",
      "sled.deployed",
      "sled.deployed.xmas",
      "sleepingbag_leather_deployed",
      "small_fuel_generator.deployed",
      "small_stash_deployed",
      "smallcandleset",
      "smallrechargablebattery.deployed",
      "smartalarm",
      "smartswitch",
      "snowmachine",
      "snowman.deployed",
      "sofa.deployed",
      "sofa.pattern.deployed",
      "solarpanel.large.deployed",
      "soundlight.deployed",
      "spiderweba",
      "spikes.floor",
      "spinner.wheel.deployed",
      "splitter",
      "spookyspeaker",
      "stocking_large_deployed",
      "stocking_small_deployed",
      "storage_barrel_a",
      "storage_barrel_b",
      "storage_barrel_c",
      "storageadaptor.deployed",
      "storagemonitor.deployed",
      "strobelight",
      "survivalfishtrap.deployed",
      "switch",
      "table.deployed",
      "telephone.deployed",
      "teslacoil.deployed",
      "timer",
      "torchholder.deployed",
      "trophy.deployed",
      "trophy_2023.deployed",
      "tunalight.deployed",
      "twitchrivals2023_desk",
      "twowaymirror.window",
      "vendingmachine.deployed",
      "volcanofirework",
      "volcanofirework-red",
      "volcanofirework-violet",
      "wall.external.high.ice",
      "wall.external.high.stone",
      "wall.external.high.wood",
      "wall.frame.cell",
      "wall.frame.cell.gate",
      "wall.frame.fence",
      "wall.frame.fence.gate",
      "wall.frame.garagedoor",
      "wall.frame.netting",
      "wall.frame.shopfront",
      "wall.frame.shopfront.metal",
      "wall.window.bars.metal",
      "wall.window.bars.toptier",
      "wall.window.bars.wood",
      "wall.window.glass.reinforced",
      "wantedposter.deployed",
      "wantedposter.wantedposter2",
      "wantedposter.wantedposter3",
      "wantedposter.wantedposter4",
      "watchtower.wood",
      "water.pump.deployed",
      "water_catcher_large",
      "water_catcher_small",
      "waterbarrel",
      "waterpurifier.deployed",
      "weaponrack_horizontal.deployed",
      "weaponrack_single1.deployed",
      "weaponrack_single2.deployed",
      "weaponrack_single3.deployed",
      "weaponrack_stand.deployed",
      "weaponrack_tall.deployed",
      "weaponrack_wide.deployed",
      "white_berry.entity",
      "windowgarland.deployed",
      "woodbox_deployed",
      "woodframe.large",
      "woodframe.medium",
      "woodframe.small",
      "woodframe.standing",
      "woodmirror.large",
      "woodmirror.medium",
      "woodmirror.small",
      "woodmirror.standing",
      "workbench1.deployed",
      "workbench2.deployed",
      "workbench3.deployed",
      "xmas.lightstring.deployed",
      "xmas_tree.deployed",
      "xorswitch.entity",
      "xylophone.deployed",
      "yellow_berry.entity",
      "_base_car_chassis.entity",
      "_basetrainwagon.entity",
      "_cardtable_base",
      "_snowmobilebase",
      "1module_cockpit",
      "1module_cockpit_armored",
      "1module_cockpit_with_engine",
      "1module_engine",
      "1module_flatbed",
      "1module_passengers_armored",
      "1module_rear_seats",
      "1module_storage",
      "1module_taxi",
      "2module_camper",
      "2module_car_spawned.entity",
      "2module_flatbed",
      "2module_fuel_tank",
      "2module_passengers",
      "3module_car_spawned.entity",
      "4module_car_spawned.entity",
      "attackhelicopter.entity",
      "blackjackmachine.caboose",
      "blackjackmachine.static",
      "car_2mod_01",
      "car_2mod_02",
      "car_2mod_03",
      "car_2mod_04",
      "car_2mod_05",
      "car_2mod_06",
      "car_2mod_07",
      "car_2mod_08",
      "car_3mod_01",
      "car_3mod_02",
      "car_3mod_03",
      "car_3mod_04",
      "car_3mod_05",
      "car_3mod_06",
      "car_3mod_07",
      "car_3mod_08",
      "car_3mod_09",
      "car_3mod_10",
      "car_3mod_11",
      "car_3mod_12",
      "car_4mod_01",
      "car_4mod_02",
      "car_4mod_03",
      "car_4mod_04",
      "car_4mod_05",
      "car_4mod_06",
      "car_4mod_07",
      "car_4mod_08",
      "car_4mod_09",
      "car_4mod_10",
      "car_4mod_11",
      "car_chassis_2module.entity",
      "car_chassis_3module.entity",
      "car_chassis_4module.entity",
      "cardtable.caboose",
      "cardtable.caboose_static",
      "cardtable.static_configa",
      "cardtable.static_configa_hidden",
      "cardtable.static_configb",
      "cardtable.static_configc",
      "cardtable.static_configd",
      "ch47.entity",
      "ch47scientists.entity",
      "chippyarcademachine.static",
      "locomotive.entity",
      "magnetcrane.entity",
      "minicopter.entity",
      "parachute",
      "rhib",
      "rowboat",
      "scraptransporthelicopter",
      "sedanrail.entity",
      "sedantest.entity",
      "snowmobile",
      "sofa.static",
      "sofa_pattern.static",
      "submarineduo.entity",
      "submarinesolo.entity",
      "testridablehorse",
      "tomahasnowmobile",
      "traincaboose.entity",
      "trainwagona.entity",
      "trainwagonb.entity",
      "trainwagonc.entity",
      "trainwagonunloadable.entity",
      "trainwagonunloadablefuel.entity",
      "trainwagonunloadableloot.entity",
      "tugboat",
      "twitchbus",
      "workcart.entity",
      "workcart_aboveground.entity",
      "workcart_aboveground2.entity"
    ],
    "Prefabs blacklist": []
  },
  "Team Options": {
    "Enable team offline protection sharing": true,
    "Mitigate damage by the team-mate who was offline the longest": false,
    "Include players that are whitelisted on Codelocks": false,
    "Prevent players from leaving or disbanding their team if at least one team member is offline": false,
    "Enable offline raid protection penalty for leaving or disbanding a team": false,
    "Penalty duration in hours": 24.0
  },
  "Command Options": {
    "Commands to check offline protection status": [
      "ao",
      "orp"
    ],
    "Command to display offline raid protection information": "raidprot",
    "Command to fill the offline times of all players": "orp.fill.onlinetimes",
    "Command to change a player's offline time": "orp.test.offline",
    "Command to change a player's offline time to the current time": "orp.test.online",
    "Command to change a player's penalty duration": "orp.test.penalty"
  },
  "Permission Options": {
    "Permission required to enable offline protection": "offlineraidprotection.protect",
    "Permission required to check offline protection status": "offlineraidprotection.check",
    "Permission required to use admin functions": "offlineraidprotection.admin"
  },
  "Other Options": {
    "Play sound when damage is mitigated": false,
    "Asset path of the sound to be played": "assets/prefabs/locks/keypad/effects/lock.code.denied.prefab",
    "Display a game tip message when a prefab is protected": true,
    "Message duration in seconds": 3.0
  },
  "Timezone Options": {
    "Timezone": ""
  },
  "Version": {
    "Major": 1,
    "Minor": 1,
    "Patch": 5
  }
}

 

Kleementin

Posted

What does "Scale 0" mean?

20240104233439_1.jpg

Kleementin

Posted

2 hours ago, Kleementin said:

What does "Scale 0" mean?

20240104233439_1.jpg

Ok. So this does mean the actual damage scale? Can you please change this to be translated into the percent of protection? Players don't get what this means and therefore the command is kinda useless.

They would rather see how much protection there is instead.

  • Like 1
Kleementin

Posted (edited)

Could you also add an option to integrate the time of protection left in the message you get when hitting a base?

Edited by Kleementin
  • Like 1
Kleementin

Posted (edited)

Can we also get an option to ignore twig or is already in the plugin?

Could not find an option in the config.

Edited by Kleementin
  • Like 1
realedwin

Posted

On 1/3/2024 at 3:08 AM, Jack said:

Hi realedwin,

Thank you to your answer.


This is my config file :

 

{
  "Raid Protection Options": {
    "Scale of damage depending on the current hour of the real day": {},
    "Scale of damage depending on the offline time in hours": {
      "12": 0.0,
      "24": 0.0,
      "48": 0.0
    },
    "Cooldown in minutes": 1,
    "Scale of damage between the cooldown and the first configured time": 0.0,
    "Protect all prefabs": true,
    "Protect vehicles": true,
    "Prefabs to protect": [
      "abovegroundpool.deployed",
      "advendcalendar.deployed",
      "andswitch.entity",
      "audioalarm",
      "autoturret_deployed",
      "barricade.concrete",
      "barricade.cover.wood",
      "barricade.metal",
      "barricade.sandbags",
      "barricade.stone",
      "barricade.wood",
      "barricade.woodwire",
      "bathtub.planter.deployed",
      "bbq.deployed",
      "beachchair.deployed",
      "beachparasol.deployed",
      "beachtable.deployed",
      "beachtowel.deployed",
      "beartrap",
      "bed_deployed",
      "black_berry.entity",
      "blue_berry.entity",
      "boogieboard.deployed",
      "boombox.deployed",
      "box.wooden.large",
      "button",
      "cabletunnel",
      "campfire",
      "cardtable.deployed",
      "carvable.pumpkin",
      "cctv_deployed",
      "ceilinglight.deployed",
      "chair.deployed",
      "chair.icethrone",
      "chineselantern.deployed",
      "chippyarcademachine",
      "christmas_door_wreath_deployed",
      "clantable.deployed",
      "coffinstorage",
      "composter",
      "computerstation.deployed",
      "confetticannon.deployed",
      "connectedspeaker.deployed",
      "corn.entity",
      "counter",
      "cupboard.tool.deployed",
      "cursedcauldron.deployed",
      "discoball.deployed",
      "discofloor.deployed",
      "discofloor.largetiles.deployed",
      "door.double.hinged.bardoors",
      "door.double.hinged.metal",
      "door.double.hinged.toptier",
      "door.double.hinged.wood",
      "door.hinged.industrial.a",
      "door.hinged.industrial.d",
      "door.hinged.metal",
      "door.hinged.toptier",
      "door.hinged.wood",
      "doorcloser",
      "doorcontroller.deployed",
      "doorgarland.deployed",
      "double_doorgarland.deployed",
      "dragondoorknocker.deployed",
      "drone.deployed",
      "dropbox.deployed",
      "drumkit.deployed",
      "easter_door_wreath_deployed",
      "electric.flasherlight.deployed",
      "electric.sirenlight.deployed",
      "electric.sprinkler.deployed",
      "electric.windmill.small",
      "electrical.blocker.deployed",
      "electrical.branch.deployed",
      "electrical.combiner.deployed",
      "electrical.heater",
      "electrical.memorycell.deployed",
      "electrical.modularcarlift.deployed",
      "electrical.random.switch.deployed",
      "electricfurnace.deployed",
      "elevator",
      "fireplace.deployed",
      "fishtrophy.deployed",
      "flameturret.deployed",
      "floor.grill",
      "floor.ladder.hatch",
      "floor.triangle.grill",
      "floor.triangle.ladder.hatch",
      "fluid.combiner.deployed",
      "fluidsplitter",
      "fluidswitch",
      "fogmachine",
      "frankensteintable.deployed",
      "fridge.deployed",
      "frontiermirror.large",
      "frontiermirror.medium",
      "frontiermirror.small",
      "frontiermirror.standing",
      "furnace",
      "furnace.large",
      "gates.external.high.stone",
      "gates.external.high.wood",
      "generator.small",
      "giantcandycane.deployed",
      "giantlollipops.deployed",
      "goldframe.large",
      "goldframe.medium",
      "goldframe.small",
      "goldframe.standing",
      "goldmirror.large",
      "goldmirror.medium",
      "goldmirror.small",
      "goldmirror.standing",
      "gravestone.stone.deployed",
      "gravestone.wood.deployed",
      "graveyardfence",
      "green_berry.entity",
      "guntrap.deployed",
      "hbhfsensor.deployed",
      "hemp.entity",
      "hitchtrough.deployed",
      "hobobarrel.deployed",
      "huntingtrophylarge.deployed",
      "huntingtrophysmall.deployed",
      "icewall",
      "igniter.deployed",
      "industrial.wall.lamp.deployed",
      "industrial.wall.lamp.green.deployed",
      "industrial.wall.lamp.red.deployed",
      "industrialcombiner.deployed",
      "industrialconveyor.deployed",
      "industrialcrafter.deployed",
      "industrialsplitter.deployed",
      "innertube.deployed",
      "innertube.horse.deployed",
      "innertube.unicorn.deployed",
      "jackolantern.angry",
      "jackolantern.happy",
      "kayak",
      "ladder.wooden.wall",
      "landmine",
      "lantern.deployed",
      "large.rechargable.battery.deployed",
      "largecandleset",
      "laserdetector",
      "laserlight.deployed",
      "legacy.shelter.wood.deployed",
      "legacy_furnace",
      "lightupframe.large",
      "lightupframe.medium",
      "lightupframe.small",
      "lightupframe.standing",
      "lightupmirror.large",
      "lightupmirror.medium",
      "lightupmirror.small",
      "lightupmirror.standing",
      "lock.code",
      "lock.key",
      "locker.deployed",
      "mailbox.deployed",
      "medium.rechargable.battery.deployed",
      "microphonestand.deployed",
      "minecart.planter.deployed",
      "mining.pumpjack",
      "mining_quarry",
      "mixingtable.deployed",
      "mortarblue",
      "mortarchampagne",
      "mortargreen",
      "mortarorange",
      "mortarpattern",
      "mortarred",
      "mortarviolet",
      "newyeargong.deployed",
      "orswitch.entity",
      "paddlingpool.deployed",
      "photoframe.landscape",
      "photoframe.large",
      "photoframe.portrait",
      "piano.deployed",
      "pinata.deployed",
      "planter.large.deployed",
      "planter.small.deployed",
      "pookie_deployed",
      "potato.entity",
      "poweredwaterpurifier.deployed",
      "pressurepad.deployed",
      "ptz_cctv_deployed",
      "pumpkin.entity",
      "railroadplanter.deployed",
      "reactivetarget_deployed",
      "red_berry.entity",
      "refinery_small_deployed",
      "repairbench_deployed",
      "researchtable_deployed",
      "rfbroadcaster",
      "rfreceiver",
      "rockingchair.deployed",
      "rockingchair.rockingchair2.deployed",
      "rockingchair.rockingchair3.deployed",
      "romancandle",
      "romancandle-blue",
      "romancandle-green",
      "romancandle-violet",
      "rug.bear.deployed",
      "rug.deployed",
      "rustigeegg_a.deployed",
      "rustigeegg_b.deployed",
      "rustigeegg_c.deployed",
      "rustigeegg_d.deployed",
      "rustigeegg_e.deployed",
      "rustigeegg_f.deployed",
      "sam_site_turret_deployed",
      "scarecrow.deployed",
      "scrapframe.large",
      "scrapframe.medium",
      "scrapframe.small",
      "scrapframe.standing",
      "scrapmirror.large",
      "scrapmirror.medium",
      "scrapmirror.small",
      "scrapmirror.standing",
      "searchlight.deployed",
      "secretlabchair.deployed",
      "shelves",
      "shutter.metal.embrasure.a",
      "shutter.metal.embrasure.b",
      "shutter.wood.a",
      "sign.hanging",
      "sign.hanging.banner.large",
      "sign.hanging.ornate",
      "sign.huge.wood",
      "sign.large.wood",
      "sign.medium.wood",
      "sign.neon.125x125",
      "sign.neon.125x215",
      "sign.neon.125x215.animated",
      "sign.neon.xl",
      "sign.neon.xl.animated",
      "sign.pictureframe.landscape",
      "sign.pictureframe.portrait",
      "sign.pictureframe.tall",
      "sign.pictureframe.xl",
      "sign.pictureframe.xxl",
      "sign.pole.banner.large",
      "sign.post.double",
      "sign.post.single",
      "sign.post.town",
      "sign.post.town.roof",
      "sign.small.wood",
      "simplelight",
      "skull_door_knocker.deployed",
      "skull_fire_pit",
      "skullspikes.candles.deployed",
      "skullspikes.deployed",
      "skullspikes.pumpkin.deployed",
      "skulltrophy.deployed",
      "skulltrophy.jar.deployed",
      "skulltrophy.jar2.deployed",
      "skulltrophy.table.deployed",
      "skylantern.deployed",
      "skylantern.skylantern.green",
      "skylantern.skylantern.orange",
      "skylantern.skylantern.purple",
      "skylantern.skylantern.red",
      "sled.deployed",
      "sled.deployed.xmas",
      "sleepingbag_leather_deployed",
      "small_fuel_generator.deployed",
      "small_stash_deployed",
      "smallcandleset",
      "smallrechargablebattery.deployed",
      "smartalarm",
      "smartswitch",
      "snowmachine",
      "snowman.deployed",
      "sofa.deployed",
      "sofa.pattern.deployed",
      "solarpanel.large.deployed",
      "soundlight.deployed",
      "spiderweba",
      "spikes.floor",
      "spinner.wheel.deployed",
      "splitter",
      "spookyspeaker",
      "stocking_large_deployed",
      "stocking_small_deployed",
      "storage_barrel_a",
      "storage_barrel_b",
      "storage_barrel_c",
      "storageadaptor.deployed",
      "storagemonitor.deployed",
      "strobelight",
      "survivalfishtrap.deployed",
      "switch",
      "table.deployed",
      "telephone.deployed",
      "teslacoil.deployed",
      "timer",
      "torchholder.deployed",
      "trophy.deployed",
      "trophy_2023.deployed",
      "tunalight.deployed",
      "twitchrivals2023_desk",
      "twowaymirror.window",
      "vendingmachine.deployed",
      "volcanofirework",
      "volcanofirework-red",
      "volcanofirework-violet",
      "wall.external.high.ice",
      "wall.external.high.stone",
      "wall.external.high.wood",
      "wall.frame.cell",
      "wall.frame.cell.gate",
      "wall.frame.fence",
      "wall.frame.fence.gate",
      "wall.frame.garagedoor",
      "wall.frame.netting",
      "wall.frame.shopfront",
      "wall.frame.shopfront.metal",
      "wall.window.bars.metal",
      "wall.window.bars.toptier",
      "wall.window.bars.wood",
      "wall.window.glass.reinforced",
      "wantedposter.deployed",
      "wantedposter.wantedposter2",
      "wantedposter.wantedposter3",
      "wantedposter.wantedposter4",
      "watchtower.wood",
      "water.pump.deployed",
      "water_catcher_large",
      "water_catcher_small",
      "waterbarrel",
      "waterpurifier.deployed",
      "weaponrack_horizontal.deployed",
      "weaponrack_single1.deployed",
      "weaponrack_single2.deployed",
      "weaponrack_single3.deployed",
      "weaponrack_stand.deployed",
      "weaponrack_tall.deployed",
      "weaponrack_wide.deployed",
      "white_berry.entity",
      "windowgarland.deployed",
      "woodbox_deployed",
      "woodframe.large",
      "woodframe.medium",
      "woodframe.small",
      "woodframe.standing",
      "woodmirror.large",
      "woodmirror.medium",
      "woodmirror.small",
      "woodmirror.standing",
      "workbench1.deployed",
      "workbench2.deployed",
      "workbench3.deployed",
      "xmas.lightstring.deployed",
      "xmas_tree.deployed",
      "xorswitch.entity",
      "xylophone.deployed",
      "yellow_berry.entity",
      "_base_car_chassis.entity",
      "_basetrainwagon.entity",
      "_cardtable_base",
      "_snowmobilebase",
      "1module_cockpit",
      "1module_cockpit_armored",
      "1module_cockpit_with_engine",
      "1module_engine",
      "1module_flatbed",
      "1module_passengers_armored",
      "1module_rear_seats",
      "1module_storage",
      "1module_taxi",
      "2module_camper",
      "2module_car_spawned.entity",
      "2module_flatbed",
      "2module_fuel_tank",
      "2module_passengers",
      "3module_car_spawned.entity",
      "4module_car_spawned.entity",
      "attackhelicopter.entity",
      "blackjackmachine.caboose",
      "blackjackmachine.static",
      "car_2mod_01",
      "car_2mod_02",
      "car_2mod_03",
      "car_2mod_04",
      "car_2mod_05",
      "car_2mod_06",
      "car_2mod_07",
      "car_2mod_08",
      "car_3mod_01",
      "car_3mod_02",
      "car_3mod_03",
      "car_3mod_04",
      "car_3mod_05",
      "car_3mod_06",
      "car_3mod_07",
      "car_3mod_08",
      "car_3mod_09",
      "car_3mod_10",
      "car_3mod_11",
      "car_3mod_12",
      "car_4mod_01",
      "car_4mod_02",
      "car_4mod_03",
      "car_4mod_04",
      "car_4mod_05",
      "car_4mod_06",
      "car_4mod_07",
      "car_4mod_08",
      "car_4mod_09",
      "car_4mod_10",
      "car_4mod_11",
      "car_chassis_2module.entity",
      "car_chassis_3module.entity",
      "car_chassis_4module.entity",
      "cardtable.caboose",
      "cardtable.caboose_static",
      "cardtable.static_configa",
      "cardtable.static_configa_hidden",
      "cardtable.static_configb",
      "cardtable.static_configc",
      "cardtable.static_configd",
      "ch47.entity",
      "ch47scientists.entity",
      "chippyarcademachine.static",
      "locomotive.entity",
      "magnetcrane.entity",
      "minicopter.entity",
      "parachute",
      "rhib",
      "rowboat",
      "scraptransporthelicopter",
      "sedanrail.entity",
      "sedantest.entity",
      "snowmobile",
      "sofa.static",
      "sofa_pattern.static",
      "submarineduo.entity",
      "submarinesolo.entity",
      "testridablehorse",
      "tomahasnowmobile",
      "traincaboose.entity",
      "trainwagona.entity",
      "trainwagonb.entity",
      "trainwagonc.entity",
      "trainwagonunloadable.entity",
      "trainwagonunloadablefuel.entity",
      "trainwagonunloadableloot.entity",
      "tugboat",
      "twitchbus",
      "workcart.entity",
      "workcart_aboveground.entity",
      "workcart_aboveground2.entity"
    ],
    "Prefabs blacklist": []
  },
  "Team Options": {
    "Enable team offline protection sharing": true,
    "Mitigate damage by the team-mate who was offline the longest": false,
    "Include players that are whitelisted on Codelocks": false,
    "Prevent players from leaving or disbanding their team if at least one team member is offline": false,
    "Enable offline raid protection penalty for leaving or disbanding a team": false,
    "Penalty duration in hours": 24.0
  },
  "Command Options": {
    "Commands to check offline protection status": [
      "ao",
      "orp"
    ],
    "Command to display offline raid protection information": "raidprot",
    "Command to fill the offline times of all players": "orp.fill.onlinetimes",
    "Command to change a player's offline time": "orp.test.offline",
    "Command to change a player's offline time to the current time": "orp.test.online",
    "Command to change a player's penalty duration": "orp.test.penalty"
  },
  "Permission Options": {
    "Permission required to enable offline protection": "offlineraidprotection.protect",
    "Permission required to check offline protection status": "offlineraidprotection.check",
    "Permission required to use admin functions": "offlineraidprotection.admin"
  },
  "Other Options": {
    "Play sound when damage is mitigated": false,
    "Asset path of the sound to be played": "assets/prefabs/locks/keypad/effects/lock.code.denied.prefab",
    "Display a game tip message when a prefab is protected": true,
    "Message duration in seconds": 3.0
  },
  "Timezone Options": {
    "Timezone": ""
  },
  "Version": {
    "Major": 1,
    "Minor": 1,
    "Patch": 5
  }
}

 

I can't reproduce your issues. Please update the plugin. If your issues persist, please contact me on discord

HunterZ

Posted

Not sure what's up, but I've noticed that v1.1.6 is showing really big hook times when I run `o.plugins` - about 8x as big as the next biggest mod, Raidable Bases.

realedwin

Posted

5 hours ago, HunterZ said:

Not sure what's up, but I've noticed that v1.1.6 is showing really big hook times when I run `o.plugins` - about 8x as big as the next biggest mod, Raidable Bases.

Oxide doesn't show hook times, only compilation times. Run o.reload OfflineRaidProtection and then o.plugins

HunterZ

Posted

On 1/16/2024 at 12:41 AM, realedwin said:

Oxide doesn't show hook times, only compilation times. Run o.reload OfflineRaidProtection and then o.plugins

I'm pretty sure it's a cumulative execution time based on the following:

  • Like 1
realedwin

Posted

7 hours ago, HunterZ said:

I'm pretty sure it's a cumulative execution time based on the following:

Good to know. I thought only Carbon showed hook times.

What does your configuration file look like? I want to debug the hook times.

HunterZ

Posted (edited)

On 1/18/2024 at 12:39 AM, realedwin said:

What does your configuration file look like? I want to debug the hook times.

Here's my config: https://pastebin.com/Xryi9qyR

Interestingly, the current hook time is tiny. I wonder if what's going on is that it does a lot of work while people are taking heli and such, but is pretty much idle the rest of the time. We have a new biweekly wipe starting today, so I'll keep an eye on server FPS and hook times if I see someone tag heli.

Edit: Got a spike today, and players said they didn't take heli but they did raid some Raidable Bases bases. I wonder if there's an easy way to detect those and bail out of processing more quickly?

Edited by HunterZ
HunterZ

Posted

Another funny data point: For some reason, animals keep congregating on my base. Another player saw this while I was offline and said they were unable to kill them - and the animals were unable to kill each other - because of ORP lmao.

I'm not sure what would cause this. I just tried turning off vehicle protection in case it's that, but unfortunately the user had already logged off and wasn't able to try again.

realedwin

Posted

45 minutes ago, HunterZ said:

Another funny data point: For some reason, animals keep congregating on my base. Another player saw this while I was offline and said they were unable to kill them - and the animals were unable to kill each other - because of ORP lmao.

I'm not sure what would cause this. I just tried turning off vehicle protection in case it's that, but unfortunately the user had already logged off and wasn't able to try again.

"Protect all prefabs": true = This will protect anything in the TC range.

realedwin

Posted

On 1/18/2024 at 6:10 PM, HunterZ said:

Here's my config: https://pastebin.com/Xryi9qyR

Interestingly, the current hook time is tiny. I wonder if what's going on is that it does a lot of work while people are taking heli and such, but is pretty much idle the rest of the time. We have a new biweekly wipe starting today, so I'll keep an eye on server FPS and hook times if I see someone tag heli.

Edit: Got a spike today, and players said they didn't take heli but they did raid some Raidable Bases bases. I wonder if there's an easy way to detect those and bail out of processing more quickly?

I have never used Raidable Bases. Do the bases have authorised players at the TC?

If these bases aren't protected, the code execution of the hook will exit early.

HunterZ

Posted

1 hour ago, realedwin said:

"Protect all prefabs": true = This will protect anything in the TC range.

Ah, okay thanks. I guess I'll have to trust that the included list is comprehensive enough.

1 hour ago, realedwin said:

I have never used Raidable Bases. Do the bases have authorised players at the TC?

If these bases aren't protected, the code execution of the hook will exit early.

I checked ownership on an RB TC, and it says:

(2) Authorized
Unknown: 4890063 - 4890063
Unknown: 6485344 - 6485344

I'm not sure if these correspond to the NPCs that RB spawned outside, or if they're arbitrary, but in any case they're not players.

realedwin

Posted

@HunterZ Please add the following code to the OnStructureAttack method (line 2761):

foreach (var id in authorizedPlayers)
{
    if (id.IsSteamId())
        break;
    else
        return null;
}

Please let me know if this fixes the spikes you get.

HunterZ

Posted

4 hours ago, realedwin said:

@HunterZ Please add the following code to the OnStructureAttack method (line 2761):

foreach (var id in authorizedPlayers)
{
    if (id.IsSteamId())
        break;
    else
        return null;
}

Please let me know if this fixes the spikes you get.

First I'll mention that the typical hook time has dramatically reduced (from 30s to <1s) since I turned off "protect all prefabs", so I guess maybe it was animals trying to kill each other forever that was causing a lot of it lol.

Regarding your suggested logic: This will only ever run one iteration of the loop, because it will either break out of the loop, or bail out of the entire method. Is this intentional?

realedwin

Posted

6 hours ago, HunterZ said:

First I'll mention that the typical hook time has dramatically reduced (from 30s to <1s) since I turned off "protect all prefabs", so I guess maybe it was animals trying to kill each other forever that was causing a lot of it lol.

Regarding your suggested logic: This will only ever run one iteration of the loop, because it will either break out of the loop, or bail out of the entire method. Is this intentional?

One iteration is enough to determine whether the TC is player-owned or NPC-owned, as it is not typical for NPCs to be authenticated at the TC.

I would never recommend turning on "Protect all prefabs". I will add an option to exclude AI (Animals, NPCs, Attack Heli & Bradley etc.)

HunterZ

Posted

21 hours ago, realedwin said:

One iteration is enough to determine whether the TC is player-owned or NPC-owned, as it is not typical for NPCs to be authenticated at the TC.

I would never recommend turning on "Protect all prefabs". I will add an option to exclude AI (Animals, NPCs, Attack Heli & Bradley etc.)

Thanks. I ended up adding this logic, and it does end up triggering quite a lot during Raidable Bases raids (I know this because the log shows a completed raid within a couple minutes of the log message below being spammed):

foreach (var id in authorizedPlayers)
{
    if (!id.IsSteamId())
    {
        PrintWarning("OnStructureAttack(): Aborting due to non-player owner");
        return null;
    }
    break;
}

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Like 6

User Feedback

1.4m

Downloads

Total number of downloads.

6.9k

Customers

Total customers served.

102.2k

Files Sold

Total number of files sold.

2m

Payments Processed

Total payments processed.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.