Поправил. Вообще лучше сначала просить минимальное что-то что бы он написал, а затем дополнять. Если теряет мысль, кидать повторно ему код и просить что нужно написать. Но как правило, рабочий код он тебе не скинет, нужно править за ним все)
Максимальная производительность для ваших игровых серверов!
Заказать сейчаснапиши плагинИзвините за путаницу. Действительно, классInputState
в Rust не содержит методаResetState
. Вместо этого, вы можете использовать методResetInput
. Вот исправленный код:
C#:using Oxide.Core; using Rust; public class L96SlotBlock : RustPlugin { private void OnPlayerInput(BasePlayer player, InputState input) { if (input.WasJustPressed(BUTTON.FIRE_PRIMARY)) { var item = player.GetActiveItem(); if (item != null && item.info.shortname == "l96rifle") { if (!permission.UserHasPermission(player.UserIDString, "l96slotblock.allowed")) { player.ChatMessage("You are not allowed to use this weapon in the quick slot."); input.ResetInput(BUTTON.FIRE_PRIMARY); } } } } }
Извините за ошибку и надеюсь, что теперь код будет работать правильно.
ХорошоНо в целом в реализации плагин простой. Сомнительно что ботик справится с этим, но на нужный путь может поставить при минимальных знаниях) Если нужно, обращайся, напишу)
Конечно! Вот код плагина для игры Rust с использованием Oxide/uMod:напиши плагин
Необходимо написать плагин для игры Rust с дополнением oxide/umod.
Нужно удалять предмет с шортнеймом "rifle.l96" из быстрого слота игрока при использовании.
using Oxide.Core;
using Rust;
public class L96SlotBlock : RustPlugin
{
private void OnPlayerInput(BasePlayer player, InputState input)
{
if (input.WasJustPressed(BUTTON.FIRE_PRIMARY))
{
var item = player.GetActiveItem();
if (item != null && item.info.shortname == "rifle.l96")
{
if (!permission.UserHasPermission(player.UserIDString, "l96slotblock.allowed"))
{
player.ChatMessage("You are not allowed to use this weapon in the quick slot.");
input.ResetInput(BUTTON.FIRE_PRIMARY);
player.inventory.containerBelt.RemoveAll(item, true);
player.Command("inventory.refresh 0");
}
}
}
}
}
.cs
, например L96SlotBlock.cs
. Затем поместите файл в папку oxide/plugins
на сервере. После перезапуска сервера плагин будет автоматически загружен и работать.l96slotblock.allowed
. Если игрок попытается использовать эту винтовку в быстром слоте без разрешения, она будет удалена и сообщение будет отправлено игроку.напиши плагин такк, чтобы его нельзя было использовать в быстрых слотахКонечно! Вот код плагина для игры Rust с использованием Oxide/uMod:
C#:using Oxide.Core; using Rust; public class L96SlotBlock : RustPlugin { private void OnPlayerInput(BasePlayer player, InputState input) { if (input.WasJustPressed(BUTTON.FIRE_PRIMARY)) { var item = player.GetActiveItem(); if (item != null && item.info.shortname == "rifle.l96") { if (!permission.UserHasPermission(player.UserIDString, "l96slotblock.allowed")) { player.ChatMessage("You are not allowed to use this weapon in the quick slot."); input.ResetInput(BUTTON.FIRE_PRIMARY); player.inventory.containerBelt.RemoveAll(item, true); player.Command("inventory.refresh 0"); } } } } }
Чтобы использовать этот плагин, сохраните его в виде файла с расширением.cs
, напримерL96SlotBlock.cs
. Затем поместите файл в папкуoxide/plugins
на сервере. После перезапуска сервера плагин будет автоматически загружен и работать.
Плагин будет блокировать использование винтовки L96, если у игрока нет разрешенияl96slotblock.allowed
. Если игрок попытается использовать эту винтовку в быстром слоте без разрешения, она будет удалена и сообщение будет отправлено игроку.
Убедитесь, что у вас установлен и настроен Oxide/uMod, чтобы плагин корректно работал.
Конечно! Вот код плагина для игры Rust с использованием Oxide/uMod, который блокирует использование определенного предмета в быстрых слотах:напиши плагин такк, чтобы его нельзя было использовать в быстрых слотах
using Oxide.Core;
using Rust;
public class SlotBlock : RustPlugin
{
private void OnPlayerInput(BasePlayer player, InputState input)
{
if (input.WasJustPressed(BUTTON.FIRE_PRIMARY))
{
var item = player.GetActiveItem();
if (item != null)
{
if (!permission.UserHasPermission(player.UserIDString, $"{item.info.shortname}.allowed"))
{
player.ChatMessage("You are not allowed to use this item in the quick slot.");
input.ResetInput(BUTTON.FIRE_PRIMARY);
}
}
}
}
}
.cs
, например SlotBlock.cs
. Затем поместите файл в папку oxide/plugins
на сервере. После перезапуска сервера плагин будет автоматически загружен и работать.{shortname}.allowed
, где {shortname}
- это короткое имя предмета. Если игрок попытается использовать предмет в быстром слоте без соответствующего разрешения, действие будет отменено.Разговаривай как с человеком)))напиши плагин такк, чтобы его нельзя было использовать в быстрых слотах
Давай запретим брать предмет в рукиКонечно! Вот код плагина для игры Rust с использованием Oxide/uMod, который блокирует использование определенного предмета в быстрых слотах:
C#:using Oxide.Core; using Rust; public class SlotBlock : RustPlugin { private void OnPlayerInput(BasePlayer player, InputState input) { if (input.WasJustPressed(BUTTON.FIRE_PRIMARY)) { var item = player.GetActiveItem(); if (item != null) { if (!permission.UserHasPermission(player.UserIDString, $"{item.info.shortname}.allowed")) { player.ChatMessage("You are not allowed to use this item in the quick slot."); input.ResetInput(BUTTON.FIRE_PRIMARY); } } } } }
Чтобы использовать этот плагин, сохраните его в виде файла с расширением.cs
, напримерSlotBlock.cs
. Затем поместите файл в папкуoxide/plugins
на сервере. После перезапуска сервера плагин будет автоматически загружен и работать.
Плагин будет блокировать использование любого предмета, если у игрока нет разрешения{shortname}.allowed
, где{shortname}
- это короткое имя предмета. Если игрок попытается использовать предмет в быстром слоте без соответствующего разрешения, действие будет отменено.
Убедитесь, что у вас установлен и настроен Oxide/uMod, чтобы плагин корректно работал.
спасибоРазговаривай как с человеком)))
"Давай поменяем подход, вместо запрета на использования, запретим брать предмет в руки"
Конечно! Вот код плагина для игры Rust с использованием Oxide/uMod, который блокирует возможность брать определенный предмет в руки:Давай запретим брать предмет в руки
using Oxide.Core;
using Rust;
public class HoldBlock : RustPlugin
{
private void OnPlayerInput(BasePlayer player, InputState input)
{
if (input.WasJustPressed(BUTTON.FIRE_PRIMARY))
{
var item = player.GetActiveItem();
if (item != null)
{
if (!permission.UserHasPermission(player.UserIDString, $"{item.info.shortname}.allowed"))
{
player.ChatMessage("You are not allowed to hold this item.");
input.ResetInput(BUTTON.FIRE_PRIMARY);
}
}
}
}
}
.cs
, например HoldBlock.cs
. Затем поместите файл в папку oxide/plugins
на сервере. После перезапуска сервера плагин будет автоматически загружен и работать.{shortname}.allowed
, где {shortname}
- это короткое имя предмета. Если игрок попытается взять в руки предмет без соответствующего разрешения, действие будет отменено.Хорошо напиши плагин используя библиотеки Oxide и Umod Который будет запрещать брать в руки предмет с шортнеймом rifle.l96Конечно! Вот код плагина для игры Rust с использованием Oxide/uMod, который блокирует возможность брать определенный предмет в руки:
C#:using Oxide.Core; using Rust; public class HoldBlock : RustPlugin { private void OnPlayerInput(BasePlayer player, InputState input) { if (input.WasJustPressed(BUTTON.FIRE_PRIMARY)) { var item = player.GetActiveItem(); if (item != null) { if (!permission.UserHasPermission(player.UserIDString, $"{item.info.shortname}.allowed")) { player.ChatMessage("You are not allowed to hold this item."); input.ResetInput(BUTTON.FIRE_PRIMARY); } } } } }
Чтобы использовать этот плагин, сохраните его в виде файла с расширением.cs
, напримерHoldBlock.cs
. Затем поместите файл в папкуoxide/plugins
на сервере. После перезапуска сервера плагин будет автоматически загружен и работать.
Плагин будет блокировать возможность брать в руки любой предмет, если у игрока нет разрешения{shortname}.allowed
, где{shortname}
- это короткое имя предмета. Если игрок попытается взять в руки предмет без соответствующего разрешения, действие будет отменено.
Убедитесь, что у вас установлен и настроен Oxide/uMod, чтобы плагин корректно работал.
Вот пример кода для создания плагина на Rust, который будет запрещать игрокам брать в руки предмет с коротким именем "rifle.l96":Хорошо напиши плагин используя библиотеки Oxide и Umod Который будет запрещать брать в руки предмет с шортнеймом rifle.l96
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Plugins;
namespace Oxide.Plugins
{
[Info("BlockL96", "YourName", "1.0.0")]
[Description("Blocks players from holding the rifle.l96 item")]
public class BlockL96 : RustPlugin
{
private const string L96Shortname = "rifle.l96";
private void OnPlayerInput(BasePlayer player, InputState input)
{
if (input.WasJustPressed(BUTTON.FIRE_PRIMARY))
{
var item = player.GetActiveItem();
if (item != null && item.info.shortname == L96Shortname)
{
player.ChatMessage("You are not allowed to hold the L96 rifle.");
input.ResetInput(BUTTON.FIRE_PRIMARY);
}
}
}
}
}
Данный код выдает ошибку InputState' does not contain a definition for 'ResetInput' and no accessible extension method 'ResetInput' accepting a first argument of type 'InputState' could be found (are you missing a using directive or an assembly reference?) | Line: 23, Pos: 27Вот пример кода для создания плагина на Rust, который будет запрещать игрокам брать в руки предмет с коротким именем "rifle.l96":
C#:using System.Collections.Generic; using Oxide.Core; using Oxide.Core.Plugins; namespace Oxide.Plugins { [Info("BlockL96", "YourName", "1.0.0")] [Description("Blocks players from holding the rifle.l96 item")] public class BlockL96 : RustPlugin { private const string L96Shortname = "rifle.l96"; private void OnPlayerInput(BasePlayer player, InputState input) { if (input.WasJustPressed(BUTTON.FIRE_PRIMARY)) { var item = player.GetActiveItem(); if (item != null && item.info.shortname == L96Shortname) { player.ChatMessage("You are not allowed to hold the L96 rifle."); input.ResetInput(BUTTON.FIRE_PRIMARY); } } } } }
Чтобы использовать этот плагин, сохраните его в файл с расширением .cs (например, BlockL96.cs) и поместите его в папку oxide/plugins на вашем сервере Rust, установленном с Oxide/Umod. После перезапуска сервера плагин будет автоматически загружен и работать.
При попытке игрока взять в руки предмет с коротким именем "rifle.l96", он получит сообщение о том, что ему не разрешено держать L96 ружье, и действие будет отменено.
Исправленный код для использования библиотеки Umod:Данный код выдает ошибку InputState' does not contain a definition for 'ResetInput' and no accessible extension method 'ResetInput' accepting a first argument of type 'InputState' could be found (are you missing a using directive or an assembly reference?) | Line: 23, Pos: 27
исправь используя библиотеку Umod
using System.Collections.Generic;
using Oxide.Game.Rust.Cui;
using Oxide.Core.Plugins;
namespace Oxide.Plugins
{
[Info("BlockL96", "YourName", "1.0.0")]
[Description("Blocks players from holding the rifle.l96 item")]
public class BlockL96 : RustPlugin
{
private const string L96Shortname = "rifle.l96";
private object CanEquipItem(PlayerInventory inventory, Item item)
{
if (item.info.shortname == L96Shortname)
{
PrintToChat(inventory.GetComponent<BasePlayer>(), "You are not allowed to hold the L96 rifle.");
return false;
}
return null;
}
}
}
OnPlayerInput
мы использовали метод CanEquipItem
, который будет вызываться при попытке игроком экипировать предмет. Мы также заменили использование метода player.ChatMessage
на PrintToChat
, чтобы отправить сообщение игроку.напиши плагин используя библиотеку Umod на уменьшение урона от ракет по игрокамИсправленный код для использования библиотеки Umod:
C#:using System.Collections.Generic; using Oxide.Game.Rust.Cui; using Oxide.Core.Plugins; namespace Oxide.Plugins { [Info("BlockL96", "YourName", "1.0.0")] [Description("Blocks players from holding the rifle.l96 item")] public class BlockL96 : RustPlugin { private const string L96Shortname = "rifle.l96"; private object CanEquipItem(PlayerInventory inventory, Item item) { if (item.info.shortname == L96Shortname) { PrintToChat(inventory.GetComponent<BasePlayer>(), "You are not allowed to hold the L96 rifle."); return false; } return null; } } }
Обратите внимание, что вместо методаOnPlayerInput
мы использовали методCanEquipItem
, который будет вызываться при попытке игроком экипировать предмет. Мы также заменили использование методаplayer.ChatMessage
наPrintToChat
, чтобы отправить сообщение игроку.
Для создания плагина на уменьшение урона от ракет по игрокам, используя библиотеку Umod, следуйте следующей структуре:напиши плагин используя библиотеку Umod на уменьшение урона от ракет по игрокам
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("Reduce Rocket Damage", "YourName", "1.0.0")]
[Description("Reduces damage from rockets for players")]
public class ReduceRocketDamage : RustPlugin
{
private Dictionary<BasePlayer, float> playerDamageMultiplier = new Dictionary<BasePlayer, float>();
private void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo hitInfo)
{
if (entity is BasePlayer && hitInfo.WeaponPrefab != null && hitInfo.WeaponPrefab.ShortPrefabName.Contains("rocket"))
{
BasePlayer player = entity as BasePlayer;
if (playerDamageMultiplier.ContainsKey(player))
{
hitInfo.damageTypes.ScaleAll(playerDamageMultiplier[player]);
}
}
}
private void OnPlayerDisconnected(BasePlayer player, string reason)
{
if (playerDamageMultiplier.ContainsKey(player))
{
playerDamageMultiplier.Remove(player);
}
}
[ChatCommand("rocketdamage")]
private void CmdSetRocketDamage(BasePlayer player, string command, string[] args)
{
if (args.Length < 1)
{
player.ChatMessage("Usage: /rocketdamage <damageMultiplier>");
return;
}
float damageMultiplier;
if (!float.TryParse(args[0], out damageMultiplier) || damageMultiplier <= 0)
{
player.ChatMessage("Invalid damage multiplier. Please enter a positive number.");
return;
}
if (playerDamageMultiplier.ContainsKey(player))
{
playerDamageMultiplier[player] = damageMultiplier;
}
else
{
playerDamageMultiplier.Add(player, damageMultiplier);
}
player.ChatMessage($"Rocket damage multiplier set to {damageMultiplier}");
}
}
}
oxide/plugins
./rocketdamage <damageMultiplier>
для установки множителя урона от ракет. Множитель по умолчанию равен 1, что означает обычный урон от ракет. Если установлен множитель меньше 1, урон от ракет будет уменьшен, а если больше 1, урон будет увеличен.Убери команды, сделай настройку урона по игрокам в самом кодеДля создания плагина на уменьшение урона от ракет по игрокам, используя библиотеку Umod, следуйте следующей структуре:
1. Создайте новый файл с расширением .cs и назовите его "ReduceRocketDamage.cs".
2. Вставьте следующий код в файл:
C#:using System.Collections.Generic; using UnityEngine; namespace Oxide.Plugins { [Info("Reduce Rocket Damage", "YourName", "1.0.0")] [Description("Reduces damage from rockets for players")] public class ReduceRocketDamage : RustPlugin { private Dictionary<BasePlayer, float> playerDamageMultiplier = new Dictionary<BasePlayer, float>(); private void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo hitInfo) { if (entity is BasePlayer && hitInfo.WeaponPrefab != null && hitInfo.WeaponPrefab.ShortPrefabName.Contains("rocket")) { BasePlayer player = entity as BasePlayer; if (playerDamageMultiplier.ContainsKey(player)) { hitInfo.damageTypes.ScaleAll(playerDamageMultiplier[player]); } } } private void OnPlayerDisconnected(BasePlayer player, string reason) { if (playerDamageMultiplier.ContainsKey(player)) { playerDamageMultiplier.Remove(player); } } [ChatCommand("rocketdamage")] private void CmdSetRocketDamage(BasePlayer player, string command, string[] args) { if (args.Length < 1) { player.ChatMessage("Usage: /rocketdamage <damageMultiplier>"); return; } float damageMultiplier; if (!float.TryParse(args[0], out damageMultiplier) || damageMultiplier <= 0) { player.ChatMessage("Invalid damage multiplier. Please enter a positive number."); return; } if (playerDamageMultiplier.ContainsKey(player)) { playerDamageMultiplier[player] = damageMultiplier; } else { playerDamageMultiplier.Add(player, damageMultiplier); } player.ChatMessage($"Rocket damage multiplier set to {damageMultiplier}"); } } }
3. Сохраните файл и загрузите его на сервер Rust в папкуoxide/plugins
.
4. Запустите сервер Rust и плагин автоматически загрузится и будет готов к использованию.
Теперь игроки могут использовать команду/rocketdamage <damageMultiplier>
для установки множителя урона от ракет. Множитель по умолчанию равен 1, что означает обычный урон от ракет. Если установлен множитель меньше 1, урон от ракет будет уменьшен, а если больше 1, урон будет увеличен.
Хорошо, вот обновленный код без команд, где вы можете настроить урон по игрокам в самом коде:Убери команды, сделай настройку урона по игрокам в самом коде
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("Reduce Rocket Damage", "YourName", "1.0.0")]
[Description("Reduces damage from rockets for players")]
public class ReduceRocketDamage : RustPlugin
{
private Dictionary<BasePlayer, float> playerDamageMultiplier = new Dictionary<BasePlayer, float>();
private void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo hitInfo)
{
if (entity is BasePlayer && hitInfo.WeaponPrefab != null && hitInfo.WeaponPrefab.ShortPrefabName.Contains("rocket"))
{
BasePlayer player = entity as BasePlayer;
float damageMultiplier;
if (playerDamageMultiplier.ContainsKey(player))
{
damageMultiplier = playerDamageMultiplier[player];
}
else
{
damageMultiplier = 0.5f; // Установите желаемый множитель урона по умолчанию
}
hitInfo.damageTypes.ScaleAll(damageMultiplier);
}
}
private void OnPlayerDisconnected(BasePlayer player, string reason)
{
if (playerDamageMultiplier.ContainsKey(player))
{
playerDamageMultiplier.Remove(player);
}
}
}
}
damageMultiplier
в строке 33.