Привет, может кто-нибудь помочь мне решить проблему с камерой. Пожалуйста, спасибо вам за время :) Я пытаюсь исправить мой черный экран, но он совсем не работает.
Если вы можете замедлить, то это будет просто и здорово, но я больше не знаю, как словить его на все, я пробую некоторые камеры vector3 и vector2, но нет, я действительно больше не читаю так много учебников, видео и ничего, что помогло мне решить эту проблему и ее раздражение для моей жизни. Пожалуйста, если вы можете это исправить, скажите мне, как еще раз спасибо.
private GameObject GameObjectHolder;
private IEnumerable<Player> _players;
private IEnumerable<LootItem> _lootItems;
private IEnumerable<ExfiltrationPoint> _extractPoints;
private float _playersNextUpdateTime;
private float _exfilNextUpdateTime;
private float _espUpdateInterval = 10f;
private float _itemNextUpdateTime;
private Camera cam;
private bool _isESPMenuActive;
private bool _isConfigMenuActive;
private bool _showPlayersESP;
private bool _crosshair;
private bool _showItemESP;
private bool _showValuables;
private bool _showExfiljewEPS;
private float _maxDrawingDistance = 400f;
private float _maxLootDrawingDistance = 1500f;
void Start()
{
cam = Camera.main;
}
public void Load()
{
GameObjectHolder = new GameObject();
GameObjectHolder.AddComponent<Abso>();
DontDestroyOnLoad(GameObjectHolder);
}
public void Unload()
{
Destroy(GameObjectHolder);
Destroy(this);
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.F5))
{
Unload();
}
if (Input.GetKeyDown(KeyCode.F11))
{
_isESPMenuActive = !_isESPMenuActive;
if (_isConfigMenuActive)
_isConfigMenuActive = false;
}
}
private void OnGUI()
{
if (_isESPMenuActive)
{
DrawESPMenu();
}
if (_isConfigMenuActive)
{
DrawConfigMenu();
}
GUI.Label(new Rect(10f, 10f, 1000f, 500), "<COLOR=#FF0000>H</color><COLOR=#FF4600>I</color><COLOR=#FF8C00>S</color><COLOR=#FFD200>T</color><COLOR=#FFff00>O</color><COLOR=#B9ff00>N</color><COLOR=#73ff00>C</color><COLOR=#2Dff00></color><COLOR=#00ff00>I</color><COLOR=#00ff46></color><COLOR=#00ff8C>T</color>");
if (_showPlayersESP && Time.time >= _playersNextUpdateTime)
{
_players = FindObjectsOfType<Player>();
_playersNextUpdateTime = Time.time + _espUpdateInterval;
}
if (_showPlayersESP)
{
DrawPlayers();
}
if (_showExfiljewEPS && Time.time >= _exfilNextUpdateTime)
{
_extractPoints = FindObjectsOfType<ExfiltrationPoint>();
_exfilNextUpdateTime = Time.time + _espUpdateInterval;
}
if (_showExfiljewEPS)
{
jewExfilEPS();
}
if (_showItemESP && Time.time >= _itemNextUpdateTime)
{
_lootItems = FindObjectsOfType<LootItem>();
_itemNextUpdateTime = Time.time + _espUpdateInterval;
}
if (_showItemESP && !_showValuables)
{
DrawLoot();
}
if (_showItemESP && _showValuables)
{
DrawValuableLoot();
}
if (_crosshair)
{
DrawCrosshair();
}
}
public void DrawCrosshair()
{
GuiHelper.DrawBox((float)Screen.width / 2f, (float)Screen.height / 2f - 5f, 1f, 11f, Color.yellow);
GuiHelper.DrawBox((float)Screen.width / 2f - 5f, (float)Screen.height / 2f, 11f, 1f, Color.yellow);
}
private void jewExfilEPS()
{
foreach (var point in _extractPoints)
{
if (point != null)
{
float distanceToObject = Vector3.Distance(Camera.main.transform.position, point.transform.position);
var exfilContainerBoundingVector = new Vector3(
Camera.main.WorldToScreenPoint(point.transform.position).x,
Camera.main.WorldToScreenPoint(point.transform.position).y,
Camera.main.WorldToScreenPoint(point.transform.position).z);
if (exfilContainerBoundingVector.z > 0.01)
{
GUI.color = Color.green;
int distance = (int)distanceToObject;
String exfilName = point.name;
string boxText = $"{exfilName} - {distance}m";
GUI.Label(new Rect(exfilContainerBoundingVector.x - 50f, (float)Screen.height - exfilContainerBoundingVector.y, 100f, 50f), boxText);
}
}
}
}
public void DrawLoot()
{
foreach (LootItem item in _lootItems)
{
if (item == null)
{
break;
}
float num = Vector3.Distance(Camera.main.transform.position, item.transform.position);
Vector3 vector = new Vector3(Camera.main.WorldToScreenPoint(item.transform.position).x, Camera.main.WorldToScreenPoint(item.transform.position).y, Camera.main.WorldToScreenPoint(item.transform.position).z);
if ((double)vector.z > 0.01)
{
GUI.color = Color.cyan;
int num2 = (int)num;
string name = item.name;
string text = string.Format("{0} - {1}m", name, num2);
GUI.Label(new Rect(vector.x - 50f, (float)Screen.height - vector.y, 100f, 50f), text);
}
}
}
public void DrawValuableLoot()
{
foreach (LootItem lootItem in _lootItems)
{
if (lootItem == null)
{
break;
}
if (lootItem.name == null)
{
break;
}
if (lootItem.name == string.Empty)
{
break;
}
if (lootItem.name.Contains("key") || lootItem.name.Contains("tetriz") || lootItem.name.Contains("lion") || lootItem.name.Contains("virtexprocessor") || lootItem.name.Contains("defibrillator") || lootItem.name.Contains("bitcoin") || lootItem.name.Contains("transilluminator") || lootItem.name.Contains("prokill") || lootItem.name.Contains("video_card") || lootItem.name.Contains("document"))
{
float num = Vector3.Distance(Camera.main.transform.position, lootItem.transform.position);
Vector3 vector = new Vector3(Camera.main.WorldToScreenPoint(lootItem.transform.position).x, Camera.main.WorldToScreenPoint(lootItem.transform.position).y, Camera.main.WorldToScreenPoint(lootItem.transform.position).z);
if (num <= _maxLootDrawingDistance && (double)vector.z > 0.01)
{
GUI.color = Color.cyan;
int num2 = (int)num;
string name = lootItem.name;
string text = string.Format("{0} - {1}m", name, num2);
GUI.Label(new Rect(vector.x - 50f, (float)Screen.height - vector.y, 100f, 50f), text);
}
}
}
}
private void DrawPlayers()
{
try
{
foreach (Player player in _players.Where(plr => plr != null))
{
if (player == null)
{
File.WriteAllText("greske.txt", "Here we go with player null error.");
return;
}
if (player.Transform == null)
{
File.WriteAllText("greske.txt", "Player.Transform is null error");
return;
}
if (Camera.main == null)
{
File.WriteAllText("greske.txt", "Camera.main is null error");
return;
}
float distanceToObject = Vector3.Distance(Camera.main.transform.position, player.Transform.position);
Vector3 playerBoundingVector = new Vector3(Camera.main.WorldToScreenPoint(player.Transform.position).x, Camera.main.WorldToScreenPoint(player.Transform.position).y, Camera.main.WorldToScreenPoint(player.Transform.position).z);
if (distanceToObject <= _maxDrawingDistance && playerBoundingVector.z > 0.01 && playerBoundingVector.x > -5 && playerBoundingVector.y > -5 && playerBoundingVector.x < 1920 && playerBoundingVector.y < 1080)
{
var playerHeadVector = new Vector3(
Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).x,
Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).y,
Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).z);
float boxVectorX = Camera.main.WorldToScreenPoint(player.Transform.position).x;
float boxVectorY = Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).y + 10f;
float boxHeight = Math.Abs(Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).y - Camera.main.WorldToScreenPoint(player.Transform.position).y) + 10f;
float boxWidth = boxHeight * 0.65f;
Color guiBackup = GUI.color;
var playerColor = GetPlayerColor(player.Side);
var isAi = player.Profile.Info.RegistrationDate <= 0;
var deadcolor = player.HealthController.IsAlive ? playerColor : Color.gray;
GUI.color = deadcolor;
GuiHelper.DrawBox(boxVectorX - boxWidth / 2f, (float)Screen.height - boxVectorY, boxWidth, boxHeight, deadcolor);
GuiHelper.DrawLine(new Vector2(playerHeadVector.x - 2f, (float)Screen.height - playerHeadVector.y), new Vector2(playerHeadVector.x + 2f, (float)Screen.height - playerHeadVector.y), deadcolor);
GuiHelper.DrawLine(new Vector2(playerHeadVector.x, (float)Screen.height - playerHeadVector.y - 2f), new Vector2(playerHeadVector.x, (float)Screen.height - playerHeadVector.y + 2f), deadcolor);
var playerName = isAi ? "[BOT]" : player.Profile.Info.Nickname;
string playerDisplayName = player.HealthController.IsAlive ? playerName : playerName + " [MRTAV]";
string playerText = $"{playerDisplayName} [{(int)distanceToObject}]M";
var playerTextVector = GUI.skin.GetStyle(playerText).CalcSize(new GUIContent(playerText));
GUI.Label(new Rect(playerBoundingVector.x - playerTextVector.x / 2f, (float)Screen.height - boxVectorY - 20f, 300f, 50f), playerText);
GUI.color = guiBackup;
}
}
}
catch (Exception ex)
{
File.WriteAllText("greske.txt", ex.ToString());
}
}
private Color GetPlayerColor(EPlayerSide side)
{
switch (side)
{
case EPlayerSide.Bear:
return Color.red;
case EPlayerSide.Usec:
return Color.blue;
case EPlayerSide.Savage:
return Color.yellow;
default:
return Color.yellow;
}
}
public void DrawESPMenu()
{
GUI.color = Color.black;
GUI.Box(new Rect(100f, 100f, 190f, 300f), "");
GUI.color = Color.white;
GUI.Label(new Rect(180f, 110f, 150f, 20f), "V-C 1.5");
_showPlayersESP = GUI.Toggle(new Rect(110f, 140f, 120f, 20f), _showPlayersESP, " ESP IGRACI");
_showExfiljewEPS = GUI.Toggle(new Rect(110f, 160f, 120f, 20f), _showExfiljewEPS, " IZLAZI ESP");
_showItemESP = GUI.Toggle(new Rect(110f, 200f, 120f, 20f), _showItemESP, " LOOT ESP");
_crosshair = GUI.Toggle(new Rect(110f, 240f, 120f, 20f), _crosshair, " NISAN");
_isConfigMenuActive = GUI.Toggle(new Rect(110f, 260f, 120f, 20f), _isConfigMenuActive, " POSTAVKE");
}
private void DrawConfigMenu()
{
GUI.color = Color.black;
GUI.Box(new Rect(400f, 100f, 190f, 300f), "");
GUI.color = Color.white;
GUI.Label(new Rect(480f, 110f, 150f, 20f), "POSTAVKE");
GUI.Label(new Rect(410f, 140f, 150f, 20f), "ESP DALJINA: " + _maxDrawingDistance);
_maxDrawingDistance = GUI.HorizontalSlider(new Rect(410f, 170f, 150f, 20f), _maxDrawingDistance, 0f, 1500f);
GUI.Label(new Rect(410f, 200f, 150f, 20f), "LOOT DALJINA: " + _maxLootDrawingDistance);
_maxLootDrawingDistance = GUI.HorizontalSlider(new Rect(410f, 230f, 150f, 20f), _maxLootDrawingDistance, 0f, 1500f);
_showValuables = GUI.Toggle(new Rect(410f, 260f, 150f, 20f), _showValuables, " VRIJEDAN LOOT");
}
private double GetDistance(double x1, double y1, double x2, double y2)
{
return Math.Sqrt(Math.Pow(x2 - x1, 2.0) + Math.Pow(y2 - y1, 2.0));
}
}
}