Freeman :
Merhaba sevgili uo-developer üyeleri
Kod:
*Bu program Ultima Online sunucusu kurmak isteyip'te oyun'un ana amacından çok,
Connector detayına takılan arkadaşlar için olmazsa olmazmış!
*******************************
*Belki birileri çıkıp küfür edecek, başka birileri de iyi temennide bulunacak.
*Şimdiden bütün tepkilere de selam olsun!
*Çok geliştirilmiş bir haliyle değil de, temel mantığıyla bu paylaşımda bulunmak istedim!
*Pek bildiğimden değil sadece mantık yürüterek birşeyleri keşfedebildim, herkes yapabilir kanısındayım.
*Aslında uzun uzadıya bir makale veya bir video ile yardımcı olmak isterdim ancak, buna pek vaktim yoktu!
*Kodlardan faydalanmak isteyen arkadaşlara tavsiyem Visual Studio kullanın ve,
*Devexpress eklentisi mutlaka edinin çok fazla alternatif sunuyor, yazılım devi diyebiliriz.
*******************************
*Gelelim kodlama kısmına!
*Sembolik kullanıcı girişi mevcut [Kullanıcı Adı :admin, Parola :12345]
*Şu an için sadece dosyaları çekip güncelleme ve sembolik bir giriş panelinden ibaret olmakla beraber
*Kendinize göre düzenleyebilir dosya yolunu değiştirip kendi sunucu adresinizi ekleyebilirsiniz.
*Dilediğiniz Client sürümüyle çalışır durumda, ben kendi bilgisayarıma göre ayarladım.
*İşin aslı 7X Client'ler için Connector kullanmanın bir anlamı yok,
*Dünyanın En pahallı sunucusunu açsam yine de Connector kullanmayı düşünmedim!
*Not: programı sağlıklı test edebilmeniz için "C:\Program Files (x86)\Electronic Arts\Ultima Online Classic"
kurulu olması lazım, veya böyle bir klasör oluşturup dosyaları o klasörün içinde bulundurmanız gerekiyor!
*Ayrıca dosyaları indireceği yer "C:\Down" diye bir klasörün içine attığını da belirteyim!
*Yukarıda da belirttiğim gibi amacım birileri faydalansın diye, tamamen test amaçlı olduğunu unutmayın!
*Öncelikle kodları şuan için paylaşmamamın nedeni tepkilerinizin ne yönde olacağı!
*Duruma göre Github veya Youtube üzerine odaklanacağımı da belirteyim!
*Bu vesileyle bu güne kadar neden böyle bir paylaşımın yapılmadığını da anlamış oluruz!
*Kısa zaman sonra kodları siz değerli UO müdavimlerine sunacağımdan süpheniz olmasın!
*Herkese selam olsun.........
Ve sevgili Uo-Developer sakinleri sizlere söz verdiğim gibi, herkes Connector yapabilsin ve daha da geliştirebilsin diye gerekli kodlar ve ve başlangıç mantığını paylaşıyorum, hataları varsa postun altına yazarsanız yardımcı olmaya çalışırız
Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.IO;
#region Freeman Uo Connector hakkında temel bilgilendirme
//Programın çalışması için önerilen adımlar
//Anlayanlara çok fazla açıklamaya gerek yok fakat, yeni başlayanlara yardımcı olması açısından birkaç önemli açıklama gereği duydum.
//Bu çalışma Visual Studio 2012 ve Devexpress 2018.2 çok özellikli eklenti Devi diyebileceğimiz programlarla hazırlanmış olup çok fazla gelişmiş bir çalılşma değil bunu da belirtmiş olayım!
//Burada kimseye birşeyler öğretmek gibi bir havada değilim!
//Visual Studio ve gerekli programların kurulu olduğunu varsayarak
//1-Bir adet Form nesnesi Devexpress kuruluysa önerim 'RibbonForm'
//-isteğe bağlı ikinci bir form veya daha fazlasını ekleyebilirsiniz.
//2-Üç adet Button dosyaları 'İndirmek' için 'Giriş' ve formu 'Kapat'mak için
//3-İki adet TextBox 'Kullanıcı Adı' ve 'Parola' için
//4-Sekiz adet Label İndirilen dosya 'Boyut: ve Kb' 'Yüklenen: ve Kb' 'Yüklenecek Dosyalar başlığı' 'Kullanıcı Adı' ve Parola' 'Altta kayan yazı için'
//5-Bir adet ListView 'Uo Dosyaları Mul, Uop, Vs için'
//6-Bir adet ListBox 'Bilgilendirme' yazısı için
//7-Bir adet ProgressBar
//8-İki Adet Timer Birincisi 'ProgressBar' ile ortak çalışması, diğeri ise 'Altta kayan yazı' için
//Hepsi bu kadar iyi çalışmalar dilerim..
#endregion
namespace Connector
{
public partial class Form1 : DevExpress.XtraBars.Ribbon.RibbonForm
{
public Form1()
{
InitializeComponent();
}
#region Download Button
private void btnBasla_Click(object sender, EventArgs e)
{
progressBar1.Value = 100;
WebClient down1 = new WebClient();
down1.DownloadFileCompleted += new AsyncCompletedEventHandler(enddown);
Uri uofile1 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/anim.idx");//<<<---Bu alana sunucu adresini atayın.
down1.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile1 = uofile1.ToString().Substring(uofile1.ToString().LastIndexOf('/') + 1);
down1.DownloadFileAsync(uofile1, ("C:/down/anim.idx"));//<<<---Bu alanda dosyaları indirmesini istediğiniz klasör yolunu belirtin.
//Not:Kod döngüsünü tek fonksiyonda yazmadım, yani dosyaları toplu okumasını uygun görmediğimden!
//Hem cpu yükü artmasın hem de, çökmelere karşı ayrı, ayrı işlesin istedim. Dilerseniz tek fonksiyonla okutabilirsiniz!
WebClient down2 = new WebClient();
progressBar1.Value = 100;
Uri uofile2 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/anim.mul");
down2.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile2 = uofile2.ToString().Substring(uofile2.ToString().LastIndexOf('/') + 1);
down2.DownloadFileAsync(uofile2, ("C:/down/anim.mul"));
WebClient down3 = new WebClient();
progressBar1.Value = 100;
Uri uofile3 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/artLegacyMUL.Uop");
down3.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile3 = uofile3.ToString().Substring(uofile3.ToString().LastIndexOf('/') + 1);
down3.DownloadFileAsync(uofile3, ("C:/down/artLegacyMUL.Uop"));
WebClient down4 = new WebClient();
progressBar1.Value = 100;
Uri uofile4 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/Cliloc.enu");
down4.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile4 = uofile4.ToString().Substring(uofile4.ToString().LastIndexOf('/') + 1);
down4.DownloadFileAsync(uofile4, ("C:/down/Cliloc.enu"));
WebClient down5 = new WebClient();
progressBar1.Value = 100;
Uri uofile5 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/fonts.mul");
down5.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile5 = uofile5.ToString().Substring(uofile5.ToString().LastIndexOf('/') + 1);
down5.DownloadFileAsync(uofile5, ("C:/down/fonts.mul"));
WebClient down6 = new WebClient();
progressBar1.Value = 100;
Uri uofile6 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/gumpartLegacyMUL.uop");
down5.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile6 = uofile6.ToString().Substring(uofile6.ToString().LastIndexOf('/') + 1);
down6.DownloadFileAsync(uofile6, ("C:/down/gumpartLegacyMUL.uop"));
WebClient down7 = new WebClient();
progressBar1.Value = 100;
Uri uofile7 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/gump.def");
down7.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile7 = uofile7.ToString().Substring(uofile7.ToString().LastIndexOf('/') + 1);
down7.DownloadFileAsync(uofile7, ("C:/down/gump.def"));
WebClient down8 = new WebClient();
progressBar1.Value = 100;
Uri uofile8 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/hues.mul");
down8.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile8 = uofile8.ToString().Substring(uofile8.ToString().LastIndexOf('/') + 1);
down8.DownloadFileAsync(uofile8, ("C:/down/hues.mul"));
WebClient down9 = new WebClient();
progressBar1.Value = 100;
Uri uofile9 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/login.cfg");
down9.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile9 = uofile9.ToString().Substring(uofile9.ToString().LastIndexOf('/') + 1);
down9.DownloadFileAsync(uofile9, ("C:/down/login.cfg"));
WebClient down10 = new WebClient();
progressBar1.Value = 100;
Uri uofile10 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/map0LegacyMUL.uop");
down10.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile10 = uofile10.ToString().Substring(uofile10.ToString().LastIndexOf('/') + 1);
down10.DownloadFileAsync(uofile10, ("C:/down/map0LegacyMUL.uop"));
WebClient down11 = new WebClient();
progressBar1.Value = 100;
Uri uofile11 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/multi.idx");
down11.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile11 = uofile11.ToString().Substring(uofile11.ToString().LastIndexOf('/') + 1);
down11.DownloadFileAsync(uofile11, ("C:/down/multi.idx"));
WebClient down12 = new WebClient();
progressBar1.Value = 100;
Uri uofile12 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/multi.mul");
down12.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile12 = uofile12.ToString().Substring(uofile12.ToString().LastIndexOf('/') + 1);
down12.DownloadFileAsync(uofile12, ("C:/down/multi.mul"));
WebClient down13 = new WebClient();
progressBar1.Value = 100;
Uri uofile13 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/prof.txt");
down13.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile13 = uofile13.ToString().Substring(uofile13.ToString().LastIndexOf('/') + 1);
down13.DownloadFileAsync(uofile13, ("C:/down/prof.txt"));
WebClient down14 = new WebClient();
progressBar1.Value = 100;
Uri uofile14 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/skillgrp.mul");
down14.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile14 = uofile14.ToString().Substring(uofile14.ToString().LastIndexOf('/') + 1);
down14.DownloadFileAsync(uofile14, ("C:/down/skillgrp.mul"));
WebClient down15 = new WebClient();
progressBar1.Value = 100;
Uri uofile15 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/Skills.idx");
down15.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile15 = uofile15.ToString().Substring(uofile15.ToString().LastIndexOf('/') + 1);
down15.DownloadFileAsync(uofile15, ("C:/down/Skills.idx"));
WebClient down16 = new WebClient();
progressBar1.Value = 100;
Uri uofile16 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/skills.mul");
down16.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile16 = uofile16.ToString().Substring(uofile16.ToString().LastIndexOf('/') + 1);
down16.DownloadFileAsync(uofile16, ("C:/down/skills.mul"));
WebClient down17 = new WebClient();
progressBar1.Value = 100;
Uri uofile17 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/speech.mul");
down17.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile17 = uofile17.ToString().Substring(uofile17.ToString().LastIndexOf('/') + 1);
down17.DownloadFileAsync(uofile17, ("C:/down/speech.mul"));
WebClient down18 = new WebClient();
progressBar1.Value = 100;
Uri uofile18 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/staidx0.mul");
down18.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile18 = uofile18.ToString().Substring(uofile18.ToString().LastIndexOf('/') + 1);
down18.DownloadFileAsync(uofile18, ("C:/down/staidx0.mul"));
WebClient down19 = new WebClient();
progressBar1.Value = 100;
Uri uofile19 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/statics0.mul");
down19.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile19 = uofile19.ToString().Substring(uofile19.ToString().LastIndexOf('/') + 1);
down19.DownloadFileAsync(uofile19, ("C:/down/statics0.mul"));
WebClient down20 = new WebClient();
progressBar1.Value = 100;
Uri uofile20 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/tileart.uop");
down20.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile20 = uofile20.ToString().Substring(uofile20.ToString().LastIndexOf('/') + 1);
down20.DownloadFileAsync(uofile20, ("C:/down/tileart.uop"));
WebClient down21 = new WebClient();
progressBar1.Value = 100;
Uri uofile21 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/tiledata.mul");
down21.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile21 = uofile21.ToString().Substring(uofile21.ToString().LastIndexOf('/') + 1);
down21.DownloadFileAsync(uofile21, ("C:/down/tiledata.mul"));
WebClient down22 = new WebClient();
progressBar1.Value = 100;
Uri uofile22 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/client.exe");
down22.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile22 = uofile22.ToString().Substring(uofile22.ToString().LastIndexOf('/') + 1);
down22.DownloadFileAsync(uofile22, ("C:/down/client.exe"));
WebClient down23 = new WebClient();
progressBar1.Value = 100;
Uri uofile23 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/Igrping.dll");
down23.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile23 = uofile23.ToString().Substring(uofile23.ToString().LastIndexOf('/') + 1);
down23.DownloadFileAsync(uofile23, ("C:/down/Igrping.dll"));
WebClient down24 = new WebClient();
progressBar1.Value = 100;
Uri uofile24 = new Uri("C:/Program Files (x86)/Electronic Arts/Ultima Online Classic/Binkw32.dll");
down24.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downfile);
string savefile24 = uofile24.ToString().Substring(uofile24.ToString().LastIndexOf('/') + 1);
down24.DownloadFileAsync(uofile24, ("C:/down/Binkw32.dll"));
}
#endregion
#region Cancel
private void btnVazgec_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
#region Login
private void btnLogin_Click(object sender, EventArgs e)
{
string user, password;
user = tbUsername.Text;
password = tbPassword.Text;
if (user == "admin" && password == "12345")
{
MessageBox.Show("Devam et Oyuna Bağlan !", "Giriş Başarılı ", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
string conn;
conn = @"C:\Program Files (x86)\Electronic Arts\Ultima Online Classic\client.exe";
System.Diagnostics.Process.Start(conn);
}
else
{
MessageBox.Show("Hatalı giriş yaptınız! Kullanıcı Adı veya Parola hatalı, Lütfen bilgileri kontrol edip yeniden deneyin!", "KULLANICI GİRİŞİ BAĞLANTI HATASI", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
#region Download Files & ProgressBar
private void downfile(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
///////////////////////////////////////////////////////////////////
//Bu kısım bir kronometre dakika saniye bazında, çok gerekli görmediğimden devre dışı bıraktım dilerseniz aktif edebilirsiniz.
//Kısacası saniye 60'tan sonra sıfırlanır sürekli döndürür, dakika her 60 saniyede bir artar devam eder bu da progressBar1 ile eş zamanlı çalışır!
//Aktif edilince, dosyaların kullanıcıya ne kadar sürede teslim edildiğini belirtir.
//Unutmadan Timer1 intervali normalde 1 olarak ayarlıdır aşağıdaki kodu aktif ettiğinizde interval 1000 olarak devam eder ve saati devreye sokar!
//Ayrıca aktif olduğunda form üzerinde uygun gördüğünüz bir yere 2 tane 'label' (lblSan ve lblDak) diye isimlendirerek eklemeyi unutmayın!
//////////////////////////////////////////////////////////////////
//lblToplam.Text = e.BytesReceived.ToString();
//lblYuklenen.Text = e.TotalBytesToReceive.ToString();
// timer1.Interval = 1000;
// lblSan.Text = "0";
// lblDak.Text = "0";
//}
//int saniye = 0, dakika = 0;
//private void timer1_Tick(object sender, EventArgs e)
//{
// saniye++;
// if (saniye == 60)
// {
// dakika++;
// saniye = 0;
// }
// lblSan.Text = Convert.ToString(saniye);
// lblDak.Text = Convert.ToString(dakika);
}
#endregion
#region Download Finish
private void enddown(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("Şimdi oyuna giriş yapabilirsiniz, iyi oyunlar dileriz..", "OYUN DOSYALARI YÜKLENDİ", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
#endregion
#region Form About
private void barListItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
AboutMe frm = new AboutMe();
frm.Show();
}
#endregion
#region Sailing Text
private void Form1_Load(object sender, EventArgs e)
{
lblScroll.Text = " * BİZİ TERCİH ETTİĞİNİZ İÇİN TEŞEKKÜRLER *, * İYİ OYUNLAR DİLERİZ *";
}
private void timer2_Tick(object sender, EventArgs e)
{
lblScroll.Text = lblScroll.Text.Substring(1) + lblScroll.Text[0].ToString();
}
}
}
#endregion