1. I managed to change the price of buildings and the number of health. But the client's UI not display correctly. How to clients notify of changes?

    Code:
    using System.Collections.Generic;
    using Oxide.Core.Plugins;namespace Oxide.Plugins
    {
        [Info("Building", "*", "1.0.0")]
        public class Building : RustPlugin
        {
            ItemDefinition wood;
            ItemDefinition stones;
            ItemDefinition metal_fragment;        [HookMethod("OnTerrainInitialized")]
            void EventTerrainInitialized() {
                Construction construction = PrefabAttribute.server.Find<Construction>(StringPool.Get("build/foundation"));
                List<ItemDefinition> itemList = ItemManager.GetItemDefinitions();            foreach (ItemDefinition itemDefinition in itemList) {
                    string name = itemDefinition.shortname;
                   
                    if (name.Equals("metal_fragments")) {
                        metal_fragment = itemDefinition;
                    } else if (name.Equals("stones")) {
                        stones = itemDefinition;
                    } else if (name.Equals("wood")) {
                        wood = itemDefinition;
                    }
                }            if (wood == null || stones == null || metal_fragment == null) {
                    return;
                }            for(int g = 0; g < construction.grades.Length; g++) {
                    BuildingGrade grade = construction.grades[g].gradeBase;
                    List<ItemAmount> baseCost = new List<ItemAmount>();                if (grade.type == BuildingGrade.Enum.Twigs) {
                        baseCost.Add(new ItemAmount(wood, 10));
                    } else if (grade.type == BuildingGrade.Enum.Wood) {
                        baseCost.Add(new ItemAmount(wood, 100));
                        grade.baseHealth = 200f;
                    } else if (grade.type == BuildingGrade.Enum.Stone) {
                        baseCost.Add(new ItemAmount(wood, 100));
                        baseCost.Add(new ItemAmount(stones, 150));
                    } else if (grade.type == BuildingGrade.Enum.Metal) {
                        baseCost.Add(new ItemAmount(wood, 100));
                        baseCost.Add(new ItemAmount(stones, 150));
                        baseCost.Add(new ItemAmount(metal_fragment, 150));
                        grade.baseHealth = 700f;
                    } else if (grade.type == BuildingGrade.Enum.TopTier) {
                        baseCost.Add(new ItemAmount(wood, 100));
                        baseCost.Add(new ItemAmount(stones, 150));
                        baseCost.Add(new ItemAmount(metal_fragment, 300));
                    }                if (baseCost.Count > 0) {
                        grade.baseCost = baseCost;
                    }
                }
            }
        }
    }
     
  2. You can't, it's just not possible as the client grabs the information from local data and not from the server.