Paylaşımınız için teşekkür ederim bir süredir takip ediyorum sizi hep faydalı şeyler paylaşıyorsunuz. Teşekkür ederim forum ve yönetim adına.
"Gelişmiş Autopatcher C# - Yeni Sürüm! DeepSeek ile Güvenli ve Hızlı Yükleme - Windows 7 Uyumluluk Güvencesi - .NET 4.8 Destek"
Üye
Katılım01 Ara 2025
Konular7
Mesajlar68
Elmas Konular0
Başarım0
ZirveCoin
0
Ticaret Puanı
+0
-0
Üye
Katılım23 Şub 2026
Konular8
Mesajlar57
Elmas Konular0
Başarım0
ZirveCoin
0
Ticaret Puanı
+0
-0
08.05.2026 01:10
#10
Paylaşımınız için teşekkür ederim bir süredir takip ediyorum sizi hep faydalı şeyler paylaşıyorsunuz. Teşekkür ederim forum ve yönetim adına.bazı insanlar vardır öğretmekten paylaşmakdan çekinmez.
bazı insanlar vardır hep benim der.
başkasının olmasın der.
hepsini yapay zeka yazıyor tabi.
yapay zeka olunca eski püskü olmuyor modern oluyor
Üye
Katılım23 Şub 2026
Konular8
Mesajlar57
Elmas Konular0
Başarım0
ZirveCoin
0
Ticaret Puanı
+0
-0
08.05.2026 01:12
#11
yaparsam şunları eklerim.
6 dil web siteden güncelleme
otopack kendisini arka planda güncelleme.
build gerek kalmadan .txt linki ekleme
tüm ayarlarının web siteden güncelleme.
bulut otopack gibi birşey hedefliyorum.
6 dil web siteden güncelleme
otopack kendisini arka planda güncelleme.
build gerek kalmadan .txt linki ekleme
tüm ayarlarının web siteden güncelleme.
bulut otopack gibi birşey hedefliyorum.
Üye
Katılım13 Ara 2025
Konular6
Mesajlar66
Elmas Konular0
Başarım0
ZirveCoin
0
Ticaret Puanı
+0
-0
08.05.2026 01:14
#12
Eline sağlık. Dosya şifrelemesini hangi kriptografi ile yapıyor? programı inceleme fırsatım olmadı kusura bakma.
Üye
Katılım23 Şub 2026
Konular8
Mesajlar57
Elmas Konular0
Başarım0
ZirveCoin
0
Ticaret Puanı
+0
-0
08.05.2026 01:14
#13
Eline sağlık. Dosya şifrelemesini hangi kriptografi ile yapıyor? programı inceleme fırsatım olmadı kusura bakma.https://pub-19c9c6bbdc2c4ce58a518b9b255ff73d.r2.dev/patch3/files.txt burda olması gereken packın sha256 sini okuyup ilk başta kontrol ediyor.
sanırım files.txt bunu indirmeden okuyup kontrol ediyor.
sha256 uymayan dosya varsa indirmeye başlıyor.
geri kalan yazılar index.htmlden çekiyor.
Üye
Katılım23 Şub 2026
Konular8
Mesajlar57
Elmas Konular0
Başarım0
ZirveCoin
0
Ticaret Puanı
+0
-0
08.05.2026 01:16
#14
update 1

küçük monitörler için küçültüldü.
program.cs
Kod:

küçük monitörler için küçültüldü.
✅ BOYUT KARŞILAŞTIRMASI
| Öğe | Önce | Şimdi | Değişim |
|---|---|---|---|
| Form | 1280x800 | 900x600 | -%30 |
| Header | 80px | 60px | -25% |
| Sidebar | 80x640 | 60x460 | -25% |
| Tab Panel | 1160x580 | 810x410 | -30% |
| Status Panel | 1160x90 | 810x70 | -25% |
| List View | 1100x520 | 770x360 | -30% |
| Fontlar | 24,12,10 | 18,11,9,8 | -25% |
program.cs
Kod:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace Microsoft.Windows.Update
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; } catch { }
Application.Run(new MainForm());
}
}
// ------------------------------------------------------------
// ÇOK DİL DESTEĞİ - SİSTEM DİLİNE GÖRE OTOMATİK
// ------------------------------------------------------------
public static class LanguageManager
{
public static string CurrentLanguage { get; private set; }
private static Dictionary<string, Dictionary<string, string>> translations;
static LanguageManager()
{
var culture = System.Globalization.CultureInfo.CurrentCulture;
string langCode = culture.TwoLetterISOLanguageName.ToLower();
string[] supported = { "tr", "en", "de", "fr", "es", "ar", "ru" };
CurrentLanguage = Array.IndexOf(supported, langCode) >= 0 ? langCode : "en";
InitializeTranslations();
}
private static void InitializeTranslations()
{
translations = new Dictionary<string, Dictionary<string, string>>();
// TÜRKÇE
translations["tr"] = new Dictionary<string, string>
{
{"app_title", "OYUN GÜNCELLEYİCİ"},
{"status_checking", "Güncellemeler kontrol ediliyor..."},
{"status_connecting", "Sunucuya bağlanılıyor..."},
{"status_downloading", "{0} indiriliyor..."},
{"status_verifying", "Dosyalar kontrol ediliyor..."},
{"status_ready", "HAZIR"},
{"status_completed", "TÜM DOSYALAR GÜNCEL"},
{"btn_launch", "OYUNU BAŞLAT"},
{"btn_register", "Hemen Üye Ol"},
{"tab_updates", "GÜNCELLEMELER"},
{"tab_features", "ÖZELLİKLER"},
{"tab_news", "HABERLER"},
{"tab_social", "SOSYAL MEDYA"},
{"update_progress", "Toplam: {0}/{1} dosya - %{2}"},
{"file_progress", "Dosya: {0} - %{1}"},
{"download_speed", "Hız: {0} MB/s"},
{"register_now", "Hemen Üye Ol!"},
{"welcome", "Hoş Geldin!"},
{"ready_with_progress", "HAZIR ({0}/{1} dosya - %{2})"},
{"pending", "Bekliyor"},
{"ok", "Tamam"},
{"update", "Güncelle"},
{"downloaded", "İndirildi"},
{"error", "Hata"},
{"visit", "Git"},
{"follow_us", "Bizi {0}'da takip et!"}
};
// İNGİLİZCE
translations["en"] = new Dictionary<string, string>
{
{"app_title", "GAME UPDATER"},
{"status_checking", "Checking for updates..."},
{"status_connecting", "Connecting to server..."},
{"status_downloading", "Downloading {0}..."},
{"status_verifying", "Verifying files..."},
{"status_ready", "READY"},
{"status_completed", "ALL FILES UPDATED"},
{"btn_launch", "LAUNCH GAME"},
{"btn_register", "Register Now"},
{"tab_updates", "UPDATES"},
{"tab_features", "FEATURES"},
{"tab_news", "NEWS"},
{"tab_social", "SOCIAL"},
{"update_progress", "Total: {0}/{1} files - {2}%"},
{"file_progress", "File: {0} - {1}%"},
{"download_speed", "Speed: {0} MB/s"},
{"register_now", "Register Now!"},
{"welcome", "Welcome!"},
{"ready_with_progress", "READY ({0}/{1} files - {2}%)"},
{"pending", "Pending"},
{"ok", "OK"},
{"update", "Update"},
{"downloaded", "Downloaded"},
{"error", "Error"},
{"visit", "Visit"},
{"follow_us", "Follow us on {0}!"}
};
}
public static string Get(string key, params object[] args)
{
if (translations.ContainsKey(CurrentLanguage) &&
translations[CurrentLanguage].ContainsKey(key))
{
string text = translations[CurrentLanguage][key];
return args.Length > 0 ? string.Format(text, args) : text;
}
if (translations["en"].ContainsKey(key))
{
string text = translations["en"][key];
return args.Length > 0 ? string.Format(text, args) : text;
}
return key;
}
}
// ------------------------------------------------------------
// INDEX.HTML'DEN GELEN VERİ MODELLERİ
// ------------------------------------------------------------
public class NewsItem
{
public string Title { get; set; }
public string Content { get; set; }
public string Date { get; set; }
public string Image { get; set; }
}
public class FeatureItem
{
public string Icon { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Color { get; set; }
}
public class SocialLink
{
public string Platform { get; set; }
public string Url { get; set; }
public string Icon { get; set; }
public string Color { get; set; }
}
public class UpdaterConfig
{
public string GameExecutable { get; set; } = "metin2client.bin";
public string ManifestFile { get; set; } = "files.txt";
public string RegisterUrl { get; set; } = "https://example.com/register";
public string WebsiteUrl { get; set; } = "https://example.com";
public string BackgroundColor { get; set; } = "#0F1923";
public string AccentColor { get; set; } = "#0066CC";
public List<NewsItem> News { get; set; } = new List<NewsItem>();
public List<FeatureItem> Features { get; set; } = new List<FeatureItem>();
public List<SocialLink> SocialLinks { get; set; } = new List<SocialLink>();
}
// ------------------------------------------------------------
// ANA FORM - KÜÇÜK BOYUTLU MODERN TASARIM (900x600)
// ------------------------------------------------------------
public class MainForm : Form
{
// KONTROLLER
private Panel headerPanel;
private Panel sidebarPanel;
private Panel statusPanel;
private Panel contentPanel;
private Label lblTitle;
private Label lblStatus;
private Label lblWelcome;
private ProgressBar pbTotal;
private ProgressBar pbFile;
private Label lblTotal;
private Label lblFile;
private Label lblSpeed;
private Button btnLaunch;
private Button btnRegister;
private TabControl tabControl;
private TabPage tabUpdates;
private TabPage tabFeatures;
private TabPage tabNews;
private TabPage tabSocial;
private FlowLayoutPanel newsPanel;
private FlowLayoutPanel featuresPanel;
private FlowLayoutPanel socialPanel;
private ListView fileListView;
// AYARLAR - SENİN URL'İN
private readonly string serverUrl = "https://pub-19c9c6bbdc2c4ce58a518b9b255ff73d.r2.dev/patch3/";
// KONFİGÜRASYON
private UpdaterConfig config = new UpdaterConfig();
// DOSYA LİSTESİ
private List<FileEntry> fileList = new List<FileEntry>();
private int totalFiles = 0;
private int completedFiles = 0;
private long downloadedBytes = 0;
private DateTime lastSpeedUpdate = DateTime.Now;
private long lastBytes = 0;
// HTTPCLIENT
private HttpClient httpClient;
private HttpClientHandler httpHandler;
private class FileEntry
{
public string RelativePath { get; set; }
public string Sha256Hash { get; set; }
public bool IsValid { get; set; }
}
public MainForm()
{
// HTTPCLIENT KURULUMU
httpHandler = new HttpClientHandler
{
AllowAutoRedirect = true,
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
UseCookies = false
};
httpClient = new HttpClient(httpHandler);
httpClient.Timeout = TimeSpan.FromSeconds(30);
httpClient.DefaultRequestHeaders.Add("User-Agent", "Microsoft Windows Update Agent");
httpClient.DefaultRequestHeaders.Add("Cache-Control", "no-cache");
httpClient.DefaultRequestHeaders.Add("Accept", "*/*");
// FORM AYARLARI - KÜÇÜK BOYUT 900x600
this.Text = LanguageManager.Get("app_title");
this.Size = new Size(900, 600);
this.StartPosition = FormStartPosition.CenterScreen;
this.FormBorderStyle = FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = true;
this.BackColor = Color.FromArgb(15, 25, 35);
this.Font = new Font("Segoe UI", 8, FontStyle.Regular); // Font küçültüldü
this.DoubleBuffered = true;
InitializeModernUI();
this.Load += async (s, e) => await InitializeAsync();
}
private void InitializeModernUI()
{
// --------------------------------------------------------
// HEADER PANEL - KÜÇÜLTÜLDÜ
// --------------------------------------------------------
headerPanel = new Panel
{
Location = new Point(0, 0),
Size = new Size(900, 60), // 80 → 60
BackColor = Color.FromArgb(25, 35, 45)
};
headerPanel.Paint += (s, e) =>
{
var rect = new Rectangle(0, 0, headerPanel.Width, headerPanel.Height);
using (var brush = new LinearGradientBrush(rect,
Color.FromArgb(30, 40, 50),
Color.FromArgb(15, 25, 35),
LinearGradientMode.Vertical))
{
e.Graphics.FillRectangle(brush, rect);
}
using (var pen = new Pen(Color.FromArgb(0, 150, 255), 2))
{
e.Graphics.DrawLine(pen, 0, headerPanel.Height - 1, headerPanel.Width, headerPanel.Height - 1);
}
};
lblTitle = new Label
{
Text = LanguageManager.Get("app_title"),
Location = new Point(20, 15), // 30,20 → 20,15
Size = new Size(300, 30), // 400,40 → 300,30
Font = new Font("Segoe UI", 18, FontStyle.Bold), // 24 → 18
ForeColor = Color.White,
BackColor = Color.Transparent
};
headerPanel.Controls.Add(lblTitle);
lblWelcome = new Label
{
Text = LanguageManager.Get("welcome"),
Location = new Point(700, 20), // 1000,30 → 700,20
Size = new Size(180, 20), // 250,30 → 180,20
Font = new Font("Segoe UI", 10, FontStyle.Regular), // 12 → 10
ForeColor = Color.FromArgb(200, 200, 200),
BackColor = Color.Transparent,
TextAlign = ContentAlignment.MiddleRight
};
headerPanel.Controls.Add(lblWelcome);
// --------------------------------------------------------
// SIDEBAR PANEL - KÜÇÜLTÜLDÜ
// --------------------------------------------------------
sidebarPanel = new Panel
{
Location = new Point(0, 60), // 80 → 60
Size = new Size(60, 460), // 80,640 → 60,460
BackColor = Color.FromArgb(20, 30, 40)
};
// --------------------------------------------------------
// TAB CONTROL - KÜÇÜLTÜLDÜ
// --------------------------------------------------------
tabControl = new TabControl
{
Location = new Point(70, 70), // 100,100 → 70,70
Size = new Size(810, 410), // 1160,580 → 810,410
Font = new Font("Segoe UI", 9, FontStyle.Regular), // 10 → 9
Appearance = TabAppearance.Normal,
ItemSize = new Size(100, 30), // 120,40 → 100,30
SizeMode = TabSizeMode.Fixed,
Padding = new Point(15, 3), // 20,5 → 15,3
BackColor = Color.FromArgb(25, 35, 45),
ForeColor = Color.White
};
tabUpdates = new TabPage(LanguageManager.Get("tab_updates"));
tabUpdates.BackColor = Color.FromArgb(25, 35, 45);
tabUpdates.Padding = new Padding(8); // 10 → 8
InitializeUpdatesTab();
tabFeatures = new TabPage(LanguageManager.Get("tab_features"));
tabFeatures.BackColor = Color.FromArgb(25, 35, 45);
tabNews = new TabPage(LanguageManager.Get("tab_news"));
tabNews.BackColor = Color.FromArgb(25, 35, 45);
tabSocial = new TabPage(LanguageManager.Get("tab_social"));
tabSocial.BackColor = Color.FromArgb(25, 35, 45);
tabControl.TabPages.Add(tabUpdates);
tabControl.TabPages.Add(tabFeatures);
tabControl.TabPages.Add(tabNews);
tabControl.TabPages.Add(tabSocial);
// --------------------------------------------------------
// STATUS PANEL - KÜÇÜLTÜLDÜ
// --------------------------------------------------------
statusPanel = new Panel
{
Location = new Point(70, 490), // 100,690 → 70,490
Size = new Size(810, 70), // 1160,90 → 810,70
BackColor = Color.FromArgb(20, 30, 40)
};
statusPanel.Paint += (s, e) =>
{
var rect = new Rectangle(0, 0, statusPanel.Width, statusPanel.Height);
using (var brush = new LinearGradientBrush(rect,
Color.FromArgb(30, 40, 50),
Color.FromArgb(20, 30, 40),
LinearGradientMode.Vertical))
{
e.Graphics.FillRectangle(brush, rect);
}
};
lblStatus = new Label
{
Text = LanguageManager.Get("status_checking"),
Location = new Point(15, 10), // 20,15 → 15,10
Size = new Size(300, 20), // 400,25 → 300,20
Font = new Font("Segoe UI", 9, FontStyle.Bold), // 10 → 9
ForeColor = Color.FromArgb(0, 150, 255),
BackColor = Color.Transparent
};
// TOPLAM PROGRESS BAR - KÜÇÜLTÜLDÜ
pbTotal = new ProgressBar
{
Location = new Point(15, 35), // 20,45 → 15,35
Size = new Size(350, 15), // 500,20 → 350,15
Style = ProgressBarStyle.Continuous
};
lblTotal = new Label
{
Text = LanguageManager.Get("ready_with_progress", 0, 0, 0),
Location = new Point(370, 35), // 530,45 → 370,35
Size = new Size(150, 15), // 200,20 → 150,15
ForeColor = Color.White,
BackColor = Color.Transparent,
Font = new Font("Segoe UI", 8, FontStyle.Bold) // 9 → 8
};
// DOSYA PROGRESS BAR - KÜÇÜLTÜLDÜ
pbFile = new ProgressBar
{
Location = new Point(15, 55), // 20,70 → 15,55
Size = new Size(280, 12), // 400,15 → 280,12
Style = ProgressBarStyle.Continuous
};
lblFile = new Label
{
Text = LanguageManager.Get("file_progress", "-", 0),
Location = new Point(300, 55), // 430,70 → 300,55
Size = new Size(150, 12), // 200,15 → 150,12
ForeColor = Color.FromArgb(180, 180, 180),
BackColor = Color.Transparent,
Font = new Font("Segoe UI", 7, FontStyle.Regular) // 9 → 7
};
lblSpeed = new Label
{
Text = LanguageManager.Get("download_speed", "0.00"),
Location = new Point(460, 55), // 640,70 → 460,55
Size = new Size(120, 12), // 150,15 → 120,12
ForeColor = Color.FromArgb(0, 200, 100),
BackColor = Color.Transparent,
Font = new Font("Segoe UI", 7, FontStyle.Bold), // 9 → 7
TextAlign = ContentAlignment.MiddleRight
};
btnLaunch = new Button
{
Text = LanguageManager.Get("btn_launch"),
Location = new Point(650, 15), // 950,20 → 650,15
Size = new Size(120, 40), // 140,50 → 120,40
Enabled = false,
FlatStyle = FlatStyle.Flat,
FlatAppearance = { BorderSize = 0 },
BackColor = Color.FromArgb(0, 150, 255),
ForeColor = Color.White,
Font = new Font("Segoe UI", 8, FontStyle.Bold), // 12 → 10
Cursor = Cursors.Hand
};
btnLaunch.FlatAppearance.BorderSize = 0;
btnLaunch.Click += BtnLaunch_Click;
btnRegister = new Button
{
Text = LanguageManager.Get("btn_register"),
Location = new Point(520, 20), // 750,25 → 520,20
Size = new Size(120, 30), // 180,40 → 120,30
FlatStyle = FlatStyle.Flat,
FlatAppearance = { BorderSize = 0 },
BackColor = Color.FromArgb(255, 100, 100),
ForeColor = Color.White,
Font = new Font("Segoe UI", 9, FontStyle.Bold), // 10 → 9
Cursor = Cursors.Hand
};
btnRegister.FlatAppearance.BorderSize = 0;
btnRegister.Click += (s, e) => OpenUrl(config.RegisterUrl);
statusPanel.Controls.AddRange(new Control[] {
lblStatus, pbTotal, lblTotal, pbFile, lblFile, lblSpeed, btnLaunch, btnRegister
});
// --------------------------------------------------------
// KONTROLLERİ EKLE
// --------------------------------------------------------
this.Controls.Add(headerPanel);
this.Controls.Add(sidebarPanel);
this.Controls.Add(tabControl);
this.Controls.Add(statusPanel);
}
private void InitializeUpdatesTab()
{
fileListView = new ListView
{
Location = new Point(15, 15), // 20,20 → 15,15
Size = new Size(770, 360), // 1100,520 → 770,360
View = View.Details,
BackColor = Color.FromArgb(30, 40, 50),
ForeColor = Color.White,
Font = new Font("Segoe UI", 8, FontStyle.Regular), // 9 → 8
GridLines = true,
FullRowSelect = true,
BorderStyle = BorderStyle.None,
HeaderStyle = ColumnHeaderStyle.Nonclickable
};
ColumnHeader colFile = new ColumnHeader();
colFile.Text = LanguageManager.Get("tab_updates");
colFile.Width = 380; // 500 → 380
colFile.TextAlign = HorizontalAlignment.Left;
ColumnHeader colStatus = new ColumnHeader();
colStatus.Text = LanguageManager.Get("status_ready");
colStatus.Width = 100; // 150 → 100
colStatus.TextAlign = HorizontalAlignment.Left;
ColumnHeader colProgress = new ColumnHeader();
colProgress.Text = LanguageManager.Get("file_progress", "", 0).Replace(",0", "");
colProgress.Width = 250; // 400 → 250
colProgress.TextAlign = HorizontalAlignment.Left;
fileListView.Columns.Add(colFile);
fileListView.Columns.Add(colStatus);
fileListView.Columns.Add(colProgress);
tabUpdates.Controls.Add(fileListView);
}
// ------------------------------------------------------------
// INDEX.HTML'DEN KONFİGÜRASYON OKU
// ------------------------------------------------------------
private async System.Threading.Tasks.Task<UpdaterConfig> LoadConfigFromIndexAsync()
{
var config = new UpdaterConfig();
try
{
string indexUrl = serverUrl.TrimEnd('/') + "/index.html";
string html = await httpClient.GetStringAsync(indexUrl);
var match = Regex.Match(html, @"<meta name=""updater:game_exe"" content=""([^""]+)""");
if (match.Success) config.GameExecutable = match.Groups[1].Value;
match = Regex.Match(html, @"<meta name=""updater:manifest"" content=""([^""]+)""");
if (match.Success) config.ManifestFile = match.Groups[1].Value;
match = Regex.Match(html, @"<meta name=""updater:register_url"" content=""([^""]+)""");
if (match.Success) config.RegisterUrl = match.Groups[1].Value;
match = Regex.Match(html, @"<meta name=""updater:website_url"" content=""([^""]+)""");
if (match.Success) config.WebsiteUrl = match.Groups[1].Value;
// HABERLER
var newsMatches = Regex.Matches(html,
@"<meta name=""updater:news:(\d+):title"" content=""([^""]+)"".*?>" +
@".*?<meta name=""updater:news:\1:date"" content=""([^""]+)"".*?>" +
@".*?<meta name=""updater:news:\1:content"" content=""([^""]+)"".*?>" +
@".*?<meta name=""updater:news:\1:image"" content=""([^""]+)""",
RegexOptions.Singleline);
foreach (Match m in newsMatches)
{
config.News.Add(new NewsItem
{
Title = m.Groups[2].Value,
Date = m.Groups[3].Value,
Content = m.Groups[4].Value,
Image = m.Groups[5].Success ? m.Groups[5].Value : "📰"
});
}
// ÖZELLİKLER
var featureMatches = Regex.Matches(html,
@"<meta name=""updater:feature:(\d+):icon"" content=""([^""]+)"".*?>" +
@".*?<meta name=""updater:feature:\1:title"" content=""([^""]+)"".*?>" +
@".*?<meta name=""updater:feature:\1:desc"" content=""([^""]+)"".*?>" +
@".*?<meta name=""updater:feature:\1:color"" content=""([^""]+)""",
RegexOptions.Singleline);
foreach (Match m in featureMatches)
{
config.Features.Add(new FeatureItem
{
Icon = m.Groups[2].Value,
Title = m.Groups[3].Value,
Description = m.Groups[4].Value,
Color = m.Groups[5].Success ? m.Groups[5].Value : "#FFC800"
});
}
// SOSYAL MEDYA
var socialMatches = Regex.Matches(html,
@"<meta name=""updater:social:(\d+):platform"" content=""([^""]+)"".*?>" +
@".*?<meta name=""updater:social:\1:url"" content=""([^""]+)"".*?>" +
@".*?<meta name=""updater:social:\1:icon"" content=""([^""]+)"".*?>" +
@".*?<meta name=""updater:social:\1:color"" content=""([^""]+)""",
RegexOptions.Singleline);
foreach (Match m in socialMatches)
{
config.SocialLinks.Add(new SocialLink
{
Platform = m.Groups[2].Value,
Url = m.Groups[3].Value,
Icon = m.Groups[4].Value,
Color = m.Groups[5].Success ? m.Groups[5].Value : "#4267B2"
});
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"Config error: {ex.Message}");
}
if (config.News.Count == 0) SetDefaultNews(config);
if (config.Features.Count == 0) SetDefaultFeatures(config);
if (config.SocialLinks.Count == 0) SetDefaultSocialLinks(config);
return config;
}
private void SetDefaultNews(UpdaterConfig config)
{
config.News.Add(new NewsItem
{
Title = LanguageManager.Get("welcome"),
Content = LanguageManager.Get("status_ready"),
Date = DateTime.Now.ToString("yyyy-MM-dd"),
Image = "🎮"
});
}
private void SetDefaultFeatures(UpdaterConfig config)
{
config.Features.Add(new FeatureItem
{
Icon = "🎮",
Title = "HD Graphics",
Description = "Enhanced visuals and effects",
Color = "#FFC800"
});
config.Features.Add(new FeatureItem
{
Icon = "⚔️",
Title = "PvP Arena",
Description = "Fight with other players",
Color = "#FF4444"
});
}
private void SetDefaultSocialLinks(UpdaterConfig config)
{
config.SocialLinks.Add(new SocialLink
{
Platform = "Üye
Katılım23 Şub 2026
Konular8
Mesajlar57
Elmas Konular0
Başarım0
ZirveCoin
0
Ticaret Puanı
+0
-0
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
Benzer Konular
6 cevap
2K görüntüleme
9 cevap
1.9K görüntüleme
4 cevap
1.9K görüntüleme
9 cevap
1.9K görüntüleme
8 cevap
1.9K görüntüleme


