Open Source CS2 FaceitFinder API

yepturkish

Master Üye
Katılım
26 Ağu 2022
Mesajlar
1,578
Beğeniler
437
Yaş
24
İletişim
FaceitFinder'a bağlanıp verileri alan, sonra da sonuçlarını programınızın menüsüne veya konsola yansıtabileceğiniz bir kod.

Örnek kullanım:
C#:
        // örnek kullanım
        private void GetUserStats(string profileID)
        {
            // steam64id'nin parametrede olması lazım.
            // addr -> CBasePlayerController.m_steamID
            var FF = new FaceitFinder(profileID);
            FF.GetAllStats(out string accstats, out string acccreated, out string playscs2since, out string totalhours, out string last2weeks, out string cs2achievements, out string bannedfrieds);
            Console.WriteLine("accstats: " + accstats);
            Console.WriteLine("acccreated: " + acccreated);
            Console.WriteLine("playscs2since: " + playscs2since);
            Console.WriteLine("totalhours: " + totalhours);
            Console.WriteLine("last2weeks " + last2weeks);
            Console.WriteLine("cs2achievements: " + cs2achievements);
            Console.WriteLine("bannedfrieds: " + bannedfrieds);
            var image = FF.profilePicture;
            // pictureBox da kullanabilirsiniz. ör: pictureBox1.Image = image;
        }

Farklı bir class veya dll içine bunu yapıştırın:
C#:
using System;
using System.Threading.Tasks;
using System.Drawing;
using System.IO;
using System.Net.Http;
using HtmlAgilityPack;
using HtmlDocument = HtmlAgilityPack.HtmlDocument;

namespace FaceitStatsAPI
{
    public class FaceitFinder
    {
        private string profileID;
        private HtmlDocument doc;
        public Image profilePicture;

        public FaceitFinder(string profileID)
        {
            this.profileID = profileID;
            LoadProfileData();
        }

        private void LoadProfileData()
        {
            string url = $"https://faceitfinder.com/profile/" + profileID;
            HtmlWeb web = new HtmlWeb();
            doc = web.Load(url);
        }

        public void GetAllStats(out string accstats, out string acccreated, out string playscs2since, out string totalhours, out string last2weeks, out string cs2achievements, out string bannedfrieds)
        {
            if (doc == null || doc.DocumentNode == null)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Hata: Sayfa verisi yüklenmedi.");
                Console.ResetColor();
                accstats = acccreated = playscs2since = totalhours = last2weeks = cs2achievements = bannedfrieds = "Hata: Sayfa yüklenmedi.";
                return;
            }

            profilePicture = GetProfilePicture();
            accstats = GetAccountStatus();
            acccreated = GetAccountCreated();
            playscs2since = GetPlaysCS2Since();
            totalhours = GetTotalCSHours();
            last2weeks = GetLast2WeeksCS2Hours();
            cs2achievements = GetCS2Achievements();
            bannedfrieds = GetBannedFriends();
        }

        public Image GetProfilePicture()
        {
            var node = doc.DocumentNode.SelectSingleNode("//div[@class='account-steam-userpic']//img");
            var adr = node?.GetAttributeValue("src", "Bulunamadı") ?? "Bulunamadı";

            Console.WriteLine($"Profil resmi URL: {adr}");

            if (adr != "Bulunamadı")
            {
                // Asenkron işlemi ayrı bir thread'de çalıştırıp sonucu bekle
                byte[] imageBytes = Task.Run(() => DownloadImage(adr)).GetAwaiter().GetResult();

                using (MemoryStream ms = new MemoryStream(imageBytes))
                {
                    return Image.FromStream(ms);
                }
            }
            return null;
        }

        public string GetAccountStatus()
        {
            var node = doc.DocumentNode.SelectSingleNode("//li[contains(text(),'Account status')]/span");
            return node?.InnerText.Trim() ?? "Bulunamadı";
        }

        public string GetAccountCreated()
        {
            var node = doc.DocumentNode.SelectSingleNode("//li[contains(text(),'Account created')]/span");
            return node?.InnerText.Trim() ?? "Bulunamadı";
        }

        public string GetPlaysCS2Since()
        {
            var node = doc.DocumentNode.SelectSingleNode("//li[contains(text(),'Plays CS2 since')]/span");
            return node?.InnerText.Trim() ?? "Bulunamadı";
        }

        public string GetTotalCSHours()
        {
            var node = doc.DocumentNode.SelectSingleNode("//li[contains(text(),'CS total hours')]/a/span");
            return node?.InnerText.Trim() ?? "Bulunamadı";
        }

        public string GetLast2WeeksCS2Hours()
        {
            var node = doc.DocumentNode.SelectSingleNode("//li[contains(text(),'CS2 last 2 weeks hours')]/a/span");
            return node?.InnerText.Trim() ?? "Bulunamadı";
        }

        public string GetCS2Achievements()
        {
            var node = doc.DocumentNode.SelectSingleNode("//li[contains(text(),'CS2 achievements')]/a/span");
            return node?.InnerText.Trim() ?? "Bulunamadı";
        }

        public string GetBannedFriends()
        {
            var node = doc.DocumentNode.SelectSingleNode("//li[contains(text(),'Banned friends')]/span");
            return node?.InnerText.Trim() ?? "Bulunamadı";
        }

        private static async Task<byte[]> DownloadImage(string imageUrl)
        {
            HttpClient client = new HttpClient();
            return await client.GetByteArrayAsync(imageUrl);
        }
    }
}
 
Son düzenleme:
Böyle görünür örnek olarak:

 
Normal CS2 için esp veya imgui yapımı bekliyorum iyi bir calışma olmuş başarılar <3
 
Normal CS2 için esp veya imgui yapımı bekliyorum iyi bir calışma olmuş başarılar <3
Menü yapmak istiyorsan her yazılım dilinde onlarca kütüphane dosyası var, onları kullanarak normalden daha gelişmiş ve güzel görünen menüler yapabilirsin.
ESP özelliği sadece 50 100 satırlık bir kodla maalesef yapılamaz.
Yapılsa bile bu kadar az kodun referans alacağı büyük bir altyapı gerekir;
Örneğin memory, overlay, paid olacaksa https kütüphaneleri vs..

Yani uğraşmadan hazır kodla bir şeyler yapmak istiyorsan githubdan ara.
 
Başarılı bir çalışma.
 

Şuanda konuyu görüntüleyen kullanıcılar

Geri
Üst Alt