Начинающий
- Статус
- Оффлайн
- Регистрация
- 9 Фев 2021
- Сообщения
- 98
- Реакции
- 27
C#:
public static Shader chamShader;
public static FieldInfo _multiMesh = null;
public static Dictionary<string, Shader> dictShaders = new Dictionary<string, Shader> { };
public static class Chams
{
public static byte[] chams = { };// В текстовом документе байты на Assets чамсов
}
private void Start()
{
if (chamShader == null)
{
var ab = UnityEngine.AssetBundle.LoadFromMemory(Chams.chams);
object[] assets = ab.LoadAllAssets();
foreach (object o in assets)
{
if (o.GetType() == typeof(Shader))
{
chamShader = (Shader)o;
}
}
ab.Unload(false);
}
StartCoroutine(chamstest());
}
private IEnumerator chamstest()
{
while (true)
{
try
{
if (LocalPlayer.Entity != null && BaseEntityEx.IsValid(LocalPlayer.Entity) && chams)
{
if (_multiMesh == null)
{
_multiMesh = typeof(PlayerModel).GetField("_multiMesh", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
}
if (chamShader != null)
{
foreach (BasePlayer player_chams in BasePlayer.VisiblePlayerList)
{
SkinnedMultiMesh smm = (SkinnedMultiMesh)_multiMesh.GetValue(player_chams.playerModel);
foreach (Renderer r in smm.Renderers)
{
if (r.name.Contains("hair") && player_chams != null && r != null && !player_chams.IsLocalPlayer() && !player_chams.IsSleeping() && smm != null && !player_chams.IsNpc && player_chams.IsAlive())
{
if (chams)
{
if (r.enabled == true)
r.enabled = false;
}
else
{
if (r.enabled == false)
r.enabled = true;
}
}
else
{
if (chams)
{
if (!dictShaders.ContainsKey(r.material.name))
dictShaders.Add(r.material.name, r.material.shader);
if (r.material.shader != chamShader)
r.material.shader = chamShader;
}
else
{
if (dictShaders.ContainsKey(r.material.name))
if (r.material.shader == chamShader)
r.material.shader = dictShaders[r.material.name];
}
}
}
}
}
}
}
catch (Exception)
{
}
yield return new WaitForSeconds(1f);
}
}
Вложения
Последнее редактирование: