Source [Windows / FreeBSD] Mainline geliştirme ortamı

Kaptan Yosun

Discord: kaptanyosun
Site yetkilisi
Acemi Moderatör
Premium Üye
Mesaj
591
Çözümler
19
Beğeni
415
Puan
839
Ticaret Puanı
0
Metin2 geliştirmeye başkalarının hazırladığı fileslerle değil, doğrudan 2014'te sızdırılan Kraizy.tgz kaynak kodlarındaki mainline ile başlamak isteyenlere, hatasız hızlı bir başlangıç sunmak için bu konuyu hazırladım.
  • Dosyaları Visual Studio 2022 ile hatasız derlenebilecek kadar düzelttim.
  • Dosya düzenini iyileştirdim.
  • Kullanılmayan/ölü sistem ve kodları kaldırdım.
  • Official Locale String güncellemesini yaptım. (henüz yayımlanmadı)
  • Birtakım bilinen açıkları kapattım. Hata düzeltmeleri yaptım.
Server kaynak kodu hem Windows, hem de FreeBSD üzerinde hatasız derlenebilir. Benim kullandığım Windows sürümü Windows 11, FreeBSD sürümü ise FreeBSD 14.0-RELEASE'dir. Serveri iki platformda derlemenin faydası, FreeBSD'nin sunucu stabilite ve performansının Windowstan daha iyi olması, Windows'ta ise hata ayıklamanın daha kolay olmasıdır. Server taraflı sistemlerinizi Windows'ta ekleyip test edebilir, hata ayıklayabilir ve ardından FreeBSD'ye aktarabilirsiniz.
Dosya önizlemesi:
1713703810381.png


Dosyaların arşivden çıkarıldıktan sonra Windows Defender taraması:
virusscan.png


FreeBSD 14 kurduktan sonra aşağıdaki adımları izleyerek sunucuyu derlemeye ve açmaya hazır hale getirebilirsiniz.​


!!! mysql80-server'i pkg ile kuramıyorsanız veya FreeBSD kurulumu yapmak istemiyorsanız buradan hazır FreeBSD sanal makinesi indirebilirsiniz:
Linkleri görebilmek için giriş yap veya kayıt ol.
!!!

Öncelikle sanal makineye erişimi açın::
ee etc/ssh/sshd_config
bu seçenekleri bulun ve değiştirin:
permitrootlogin yes
PasswordAuthentication yes

Artık sunucuya Windows Terminal ile bağlanabilirsiniz.:
paketleri yükleyin:
pkg install python mysql80-client mysql80-server gmake makedepend openssl llvm-devel gdb

MySQL kurulumunu yapın
MySQL makine ile birlikte açılsın:
pwd_mkdb -p /etc/master.passwd
chown -R mysql /var/db/mysql/
chgrp -R mysql /var/db/mysql/
echo 'mysql_enable="YES"' >> /etc/rc.conf
service mysql-server start
MySQL admin şifresini değiştirin:
mysqladmin -uroot -p password
Enter password: <burayı boş bırakın.>
New password: <yeni şifrenizi girin.>
Confirm new password: <yeni şifrenizi girmeyi onaylayın.>
MySQL kullanıcıları ve izinlerini ayarlayın (123 yazan yere şifre tanımlayın, veya olduğu gibi bırakın):
mysql -p
CREATE USER 'root'@'%' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

CREATE USER 'kaptan'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON *.* TO 'kaptan'@'localhost' WITH GRANT OPTION;
MySQL veritabanlarını oluşturun:
CREATE DATABASE account;
CREATE DATABASE log;
CREATE DATABASE common;
CREATE DATABASE player;
CREATE DATABASE hotbackup;
Serverin MySQL'e bağlanacağı kullanıcıya izinleri sağlayın:
GRANT ALL ON `account`.* TO 'kaptan'@'localhost';
GRANT ALL ON `common`.* TO 'kaptan'@'localhost';
GRANT ALL ON `hotbackup`.* TO 'kaptan'@'localhost';
GRANT ALL ON `log`.* TO 'kaptan'@'localhost';
GRANT ALL ON `player`.* TO 'kaptan'@'localhost';
İşlemleri kaydedip MySQL'den çıkın:
flush privileges;
quit;
MySQL 8 sürümünü kullandığımız için bu bağlantı fixini yapmalıyız:
ee /usr/local/etc/mysql/my.cnf

Bul:
bind-address            = 127.0.0.1
Değiştir:
bind-address            = 0.0.0.0

service mysql-server restart

Ana dizine ışınlanın:
cd /
Home klasörü oluşturun:
mkdir home

Ardından MySQL veritabanınıza Navicat ile bağlanıp, MySQL Databases klasöründeki .sql dosyalarını ilgili veritabanlarının üzerine sürükleyerek veritabanlarını kurabilirsiniz.

Şimdi ise sunucuya WinSCP ile bağlanın:​

FreeBSD ana dizindeki /home klasörünü açın ve içine bu klasörleri atın:
  • ServerFiles-FreeBSD
  • ServerExtern-FreeBSD
  • ServerSource

Artık sunucu derlenip açılmaya hazır. Windows Terminal'e dönüp bu adımları takip edin:​

Server kaynak dosyalarının olduğu dizine ışınlanın:
cd /home/ServerSource/
sunucuyu derlemeden önce temizlik:
gmake clean
şimdi sunucuyu tam derleyin (-j değeri aynı anda kaç dosya derleneceğini belirler, makine hızınıza göre bir değer belirleyin):
gmake all -j10
serverfiles'e ışınlanın::
cd /home/ServerFiles-FreeBSD/
gerekli izinleri sağlayın:
chmod 777 *.sh
gerekli dosya ve bağlantıları oluşturun:
./generate.sh
questlere ışınlanın:
cd /home/ServerFiles-FreeBSD/share/locale/turkey/quest
quest derleyiciye izin sağlayın:
chmod 777 qc
questlerı derleyin:
sh make.sh
artık oyun başlatmaya hazır, serverfilese ışınlanın:
cd /home/ServerFiles-FreeBSD
oyunu başlatın:
./start.sh
ek komut: oyunu bu komutla durdurun ki veritabanı sorunları yaşanmasın:
./stop.sh
ek komut: arta kalan syserr ve log dosyalarını bu komutla silin:
./clear.sh

FreeBSD kısmı bitti.

Sıra geldi Windows'a. Burada işler çok daha kolay.​

Linkleri görebilmek için giriş yap veya kayıt ol.
adresteki (mysql-5.6.51-win32.zip) adlı dosyayı indirin.
Mysql kurulumunu bu videoyu takip ederek yapabilirsiniz. Süre: 00:19 - 00:50
(mt2 kullanıcı adı yerine kaptan yazabilir veya kendiz başka bir şey belirleyebilirsiniz, ancak dosyaların içindeki varsayılan kullanıcı adı: kaptan)
(Windows'ta MySQL kurarken şifreye 123 yazmanıza izin vermez, 1234 yazabilirsiniz, kurulum bittikten sonra Navicat üzerinden şifreleri yeniden 123 olacak şekilde değiştirebilirsiniz. Yoksa ServerFiles-Windows\cores\db\ konumundaki conf.txt dosyasındaki şifreyi 1234 olarak güncellemeniz gerekir)


MySQL komutları::
CREATE DATABASE account;
CREATE DATABASE log;
CREATE DATABASE common;
CREATE DATABASE player;
CREATE DATABASE hotbackup;

GRANT ALL PRIVILEGES ON *.* TO 'kaptan'@'localhost' WITH GRANT OPTION;

Ardından videodaki 3:25 - 4:05 aralığında gösterilen gibi database'leri kurabilirsiniz.

Sıra geldi sunucuyu kurup başlatmaya:​

ServerSource içindeki m2server.2008.sln dosyasını açın.
Serveri 32 bit modda Release ve Debug olarak derleyin.
ServerSource/Bin içindeki SendToServerfiles.bat komutunu çalıştırın.
ServerFiles-Windows içindeki start.bat komutunu çalıştırın.
Sunucuyu kapatmak için sırayla auth, ch1, ch2, ch99 ve db tıklayıp ESC tuşuna basın.

Questleri derlemek için ServerSource\Bin\Release içindeki qc.exe'yi ServerFiles-Windows\cores\xx\locale\turkey\quest konumuna kopyalayıp, derlemek istediğiniz questleri qc.exe'ye sürükleyin.

Hatırlatma: Windows ile FreeBSD ayrı veritabanlarında çalıştığı için FreeBSD'de yaptığınız oyun içi işlemler Windows server'e yansımaz.

İstediğiniz extern dosyalarını internetteki çeşitli rehberleri takip ederek güncelleyebilirsiniz.

Güle güle geliştirin​

0414_233326.jpg
 
Son düzenleme:
@Kaptan Yosun

Üyelerimizin ve ziyaretçilerimizin güvenliğini sağlamak için site içerisinde paylaştığınız dosyaların virüs tarama sonuçlarını 24 saat içerisinde eklemeniz gerekmektedir. Kendi bilgisayarınızdaki virüs programı ile taratabilir veya virüstotal benzeri siteleri kullanarak işlemleri tarama sonuçlarını ekleyebilirsiniz.
 
@Kaptan Yosun

Üyelerimizin ve ziyaretçilerimizin güvenliğini sağlamak için site içerisinde paylaştığınız dosyaların virüs tarama sonuçlarını 24 saat içerisinde eklemeniz gerekmektedir. Kendi bilgisayarınızdaki virüs programı ile taratabilir veya virüstotal benzeri siteleri kullanarak işlemleri tarama sonuçlarını ekleyebilirsiniz.
Windows Defender taraması ekledim.
 
Rar şifresini ben mi göremedim yoksa eklemeyi mi unuttunuz. Bu arada paylaşımın için teşekkürler.
 
Güncelleme:
-Pack sadeleştirildi ve aynı dosyaların kopyaları silindi. 4000+ kopya dosya silindi.
-Season packleri silindi ve dosyaları normal packlerin arasına eklendi, maplerin ve modellerin dosya yollarını season yerine ymir work'e yönlendirdim.
-Uiscprit, Root'un içine taşındı.
-DumpProto'daki eskik PC_BANG kodları eklendi.
-Işınlanırken clienti çökerten bir bug fixlendi.
-Mob_names.txt iyileştirildi.
-PackMakerLite 3.0, Tools'a eklendi.
-Granny Texture Path Changer, Tools'a eklendi.

Konudaki indirme linkinden güncel versiyonu indirebilirsiniz.
Konuya fix listesini de ekledim.
 
Merhaba, açmış olduğunuz konu için teşekkürler fakat daha önce yaşamış olduğunuz skillerin gm efekti verme sorunu var affectleri null yaptım ama devam ediyor.
 
Merhaba, açmış olduğunuz konu için teşekkürler fakat daha önce yaşamış olduğunuz skillerin gm efekti verme sorunu var affectleri null yaptım ama devam ediyor.
Serveri yeniden başlatınız mı? Bugün test eder skill protoyu değiştiririm olmadı. Source kaynaklı değil, çünkü değiştirilmemiş mainline bu.
 
Şuanda protoları kurcalıyorum ama bakayım çözemessem size zahmet konuya skill protoyu ayrı bir güncelleme olarak verirsiniz
Şimdi test ettim, skill proto'dan YMIR affect'lerini silince GM olma sorunu düzeldi. Siz sunucuyu yeniden başlatmamışsınız.
1713516469535.png
 
Rica etsem skill protoyu nasıl düzenlemem gerektiğini söyler misiniz çünkü ben denediğimde silinmiyor affectler
Özel bir şey yapmadım. Navicat ile MySQL'e bağlanıp Skill protoda YMIR olan affectleri klavyenin delete tuşuyla sildim. Sizde silmeye çalıştığınızda nasıl bir hata veriyor?
 
Son düzenleme:
Özel bir şey yapmadım. Navicat ile MySQL'e bağlanıp Skill protoda YMIR olan affectleri klavyenin delete tuşuyla sildim. Sizde silmeye çalıştığınızda nasıl bir hata veriyor?
265 - Data truncated for column 'setAffectFlag' at row 1 hatası veriyordu dışarı aktardım kodlardan sildim ama yine gm efekti veriyor kafayı yicem skill protoyu rica etsem paylaşır mısınız birde savaşçı güçlü bedeni kontrol eder misiniz ?
 
265 - Data truncated for column 'setAffectFlag' at row 1 hatası veriyordu dışarı aktardım kodlardan sildim ama yine gm efekti veriyor kafayı yicem skill protoyu rica etsem paylaşır mısınız birde savaşçı güçlü bedeni kontrol eder misiniz ?
Test ettim, güçlü bedende de problem yok. Bence siz yanlış işletim sisteminin veritabanını değiştiriyorsunuz. Server Windows'ta açıksa Windows MySQL'ini değiştirdiğinize emin olun.

1713534623441.png

Skill protoyu eklere ekliyorum.
 

Dosya Eklentileri

  • skill_proto.7z
    4 KB · Gösterim: 1
Test ettim, güçlü bedende de problem yok. Bence siz yanlış işletim sisteminin veritabanını değiştiriyorsunuz. Server Windows'ta açıksa Windows MySQL'ini değiştirdiğinize emin olun.

16463 eklentisini görüntüle
Skill protoyu eklere ekliyorum.
bu skill protoyuda attım ama o sıradada hata verdi başka bir proto indirmişim ama nerden indirdim bilmiyorum o çalıştı efektler gitti buraya paylaşayım lazım olur
 

Dosya Eklentileri

  • player__skill_proto.rar
    5 KB · Gösterim: 1
Update 2
Epey bir ölü kodu temizledim. Toplam 17000 satırdan fazla kod silindi. (Yarısından çoğu Teen projesi)
Üstteki ana konudan indirebilirsiniz.

-XTrap kaldırıldı.
-HackShield kaldırıldı.
-NProtect_GameGuard kaldırıldı.
-Netmarble kaldırıldı.
-Hammer of Tor kaldırıldı.
-Auth_Brazil kaldırıldı.
-Auth_Japan kaldırıldı.
-OpenID kaldırıldı.
-Matrix_card kaldırıldı.
-Passpod kaldırıldı.
-Blocked_Country_ip kaldırıldı.
-Vcard kaldırıldı.
-Teen kaldırıldı.
-Number_ex fix eklendi. (Windows server'de yaratıklar düşürebilecekleri tüm itemleri düşürüyordu.)
 
Update 2
Epey bir ölü kodu temizledim. Toplam 17000 satırdan fazla kod silindi. (Yarısından çoğu Teen projesi)
Üstteki ana konudan indirebilirsiniz.

-XTrap kaldırıldı.
-HackShield kaldırıldı.
-NProtect_GameGuard kaldırıldı.
-Netmarble kaldırıldı.
-Hammer of Tor kaldırıldı.
-Auth_Brazil kaldırıldı.
-Auth_Japan kaldırıldı.
-OpenID kaldırıldı.
-Matrix_card kaldırıldı.
-Passpod kaldırıldı.
-Blocked_Country_ip kaldırıldı.
-Vcard kaldırıldı.
-Teen kaldırıldı.
-Number_ex fix eklendi. (Windows server'de yaratıklar düşürebilecekleri tüm itemleri düşürüyordu.)
Source kodlarında discord libleri var ama kodlar yarım mı kurcalayamadım sormak istedim ?
 
Geri
Üst