AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

Konu Yazar

TrayhopeR

www.trayhoper.net
May
2,830
62
Ebenezerden sonrada şimdi AI Serverın işlemlerini basit şekilde açıklıyorum,inşallah beğenirsiniz ..

Bu Kodda karşıya işleyecek dmg bulunuyor ...

Kod:
HitB = (int)((Hit * 200) / (Ac + 240))

Hit dediğimiz olay db deki MAGIC tablolarından alınan hit sekmesi.200 ile çarpıyor , adamın defansına 240 ekleyip birbirine bölüyor.
Çıkan sonuçta clientte sağ alt taraftaki dmg oluyor : ) Tabi bu işlem sadece skillin dmg i.Yani burada dex e göre veya str ye göre
dmg bulunmuyor.Burada sadece hiç itemsiz bir adamın skilli vurdugunda işleyecek dmg bulunuyor.Spike hit 600 diyelim.
600 * 200 = 120.000 , 1200 Defans bir warrior , 1200 + 240 = 1440 , 120.000 / 1440 = 85 türü birşey çıkıyor hesaplamadım.
1200 Defans bir warriora dual dagger ve 600 hitli bir spike ile 85 civarı vuracaksınız.Denemedim ama kodların açıklaması bu sekilde ..

-----------------------------------------------

Bu kodda vuracagınız adamın defansı bulunuyor ..

Kod:
Ac = (short)(pNpc->m_sDefense);

-----------------------------------------------
Bu kodda canınız ile alakalı birşey.Sanırım bu town atarken filan canınızın yarıdan aşağı kontrolü bu kod ile yapılıyor ..

#define MORAL_GOOD 0x01
#define MORAL_BAD 0x02
#define MORAL_NEUTRAL 0x03

-----------------------------------------------
Bu kodda ise karşı player ın durumu ölmüşse ve hp si 0 olduysa yapılacak işlemleri barındırıyor ..
Kod:
if(pNpc->m_NpcState == NPC_DEAD) return;
if(pNpc->m_iHP == 0) return;

-----------------------------------------------

Burdaki kod ise bir test kodu.Sourceları yazan sungyong arkadasımız biraz makara yapmak istemiş : )
Kod:
	nFinalDamage = GetDamage(tid);
	if( m_pMain->m_byTestMode )		nFinalDamage = 3000;	// sungyong test
-----------------------------------------------
Aşağıdaki kodda atak yapacagınız kişinin hp si hesaplanıyor ..
Kod:
short sOldNpcHP = pNpc->m_iHP;
-----------------------------------------------
Aşağıdaki kod ise AI Server klasöründeki logları tutuyor ..
Kod:
for( Iter = m_UserLogList.begin(); Iter != m_UserLogList.end(); Iter++ ) {
		//string.ReleaseBuffer();
		if( (*Iter)->byFlag == USER_LOGIN )
			string.Format( "%d-%d-%d %d:%d, %s, %d, %s\r\n", (*Iter)->t.GetYear(), (*Iter)->t.GetMonth(), (*Iter)->t.GetDay(), (*Iter)->t.GetHour(), (*Iter)->t.GetMinute(), "LogIn", (*Iter)->byLevel, (*Iter)->strUserID);
----------------------------------------------
Aşağıdaki kodda atacağınız skillin fail verip vermemesi ayarlanıyor ..

Kod:
if( rate >= 5.0 )
	{
		if( random >= 1 && random <= 3500)
			result = GREAT_SUCCESS;
		else if( random >= 3501 && random <= 7500)
			result = SUCCESS;
		else if( random >= 7501 && random <= 9500)
			result = NORMAL;
		else if( random >= 9501 && random <= 10000)
			result = FAIL;
		else
			result = FAIL;
	}

Rate >= 5.0 Yani Rate 5 den büyükse 1 ile 3500 arası bir sayı alıyor.Eğer bu sayı 1 - 3500 arasında ise skilliniz failsiz vuruluyor ..
Eğer Rate 5 den büyük ve 1 - 3500 arası değilse 3501 - 7500 arası bakılıyor.Bundada vuruluyor ama nasıl oluyor bilmiyorum.
Eğer Rate 5 den büyük ve 9501 - 10000 arası ise ( ki bu düşük bir ihtimal ) skill fail veriyor.Düşük olmasını suna dayandırarak söyledim;
7500 - 3500 = 4000 , 9500 - 7500 = 2000 , 10.000 - 9500 = 500 .. Rasgele sayının skille fail verdirme oranı 500 yani en küçük olanda ..
Buradaki random değeri skillin havada gitme süresince değişiyor.Yani Static Orb attığınız zaman adam skill menzilinden çıktıysa,skill fail verir.
Siz skili atınca random değeri 1 den başlar ve skill havada gittikçe artmaya devam eder.Varma süresi ne kadar uzun sürerse,o kadar çok fail verir.
Kodun tek açıklaması bu.Yani aslında en mantıklısı bu :)Hatta mage 72 lerde adamın dibindeyken bile fail verebilir.Buda MAGIC tablosundaki
DirectType sekmesiyle alakalı bir durum sanırım .. Özellikle klavyeden w ile koşarkan 72 stafı atarsanız fail verir,ama mouse ile giderseniz , vermez ..
Buda clientin bir bugu sanırım .. USKO da FD ile bu sorun düzeltildi ^^

------------------------------------------------
Aşağıdaki kodda ise magelerin atakları hesaplanıyor .. Ice,Light,Fire Ataklar karşı tarafın rezistanslarına bölünerek bir sonuç çıkıyor ..

Kod:
switch (m_bMagicTypeLeftHand) {	// SOL EL 
		case 1 :	// Fire Damage
			total_r = pNpc->m_byFireR;
			break;
		case 2 :	// Ice Damage
			total_r = pNpc->m_byColdR;
			break;
		case 3 :	// Lightning Damage
			total_r = pNpc->m_byLightningR;
			break;

Ben sol el olanını yazdım,bunun sağ el için olanıda var.Ama bildigim kadarıyla stafflar sadece sağ ele takılıyor ..

------------------------------------------------
Aşağıdaki kod sizin karşıdan yiyeceginiz dmg i belirleyen kod ..
Kod:
damage = m_pSrcUser->GetDamage(tid, magicid);
-----------------------------------------------
Buradaki kodda ise rogue ataklarının dex ile yapılan işlemleri açıklanıyor ...
Kod:
total_hit = (total_hit * (dexpoint  + 20)) / 170;
MAGIC tablosundaki spike hiti 800 ise 800 * (255 + 20 = 275) / 170 = 800 * 275 = 220.000 / 170 = 1294 :) Bu değer
diğer kodlarda dallanıp budaklandırılıp 255 dex üzerine kıyafetlerden gelen +dex bonuslar ile eklenerek dahada arttırılıyor ..
Burada sadece dmg hesaplanıyor , ama karşıya bu dmg değil,karşıdakinin defansı çıkarıldıktan sonraki dmg gidiyor.Yukarıda
göstermiştim :)

----------------------------------------------
Kodlar arasında bu bölüm oldukça dikkatimi çekti.MAKE_WEAPON tablosuna baglanıp işlem yapılıyor,ama 1098 versionlarda ben böyle bir tablo hatırlamıyorum.Acaba bizim db ler eksikmiydi :) Birde sabit bir odbc ye baglanıyor,şaşırdım :S
Kod:
return _T("ODBC;DSN=kn_online;UID=knight;PWD=knight"); // ODBC Baglantısı :S
return _T("[dbo].[MAKE_WEAPON]"); // DB Baglantısı :S

Classlar ile birşeyler yapıyor ama pek çakamadım :)

----------------------------------------------
Bir bölüm var biraz uzun ama yazmadım onu , bu ai server birde oyunda hangi map üzerindeyseniz kordinatı belirliyor :)

Ayrıca bulundugunuz map taki npc leride ai server yüklüyor ..
----------------------------------------------
Burada ZONE_INFO tablosuna ait zone numaralarına göre mapları yüklüyor ..
Kod:
filename.Format( ".\\MAP\\%d.evt", zone_number);
^^
----------------------------------------------
Aşağıdaki kodda ise server adı ve diğer bilgileri almak için version managera bağlanıyor ...
Kod:
ON_MESSAGE( WM_GAMESERVER_LOGIN, OnGameServerLogin )
Version Manager ın 1098 deki adı Login Server :)
---------------------------------------------
Bazı sublar içinde çalıştırıldıktan sonra yaptıgı işlemler verilmiş :

Logfile initialize // Log Dosyası Yükleniyor
DB part initialize // ZONE Bilgileri Alınıyor
Communication Part Initialize // Orc ve Human Portları Açılıyor
Load Magic Table // Skiller Yükleniyor
Load NPC Item Table // NPC lerde hangi itemlerin satılacagı bilgisi alınıyor
Load NPC Data & Activate NPC // NPC Gorunumleri,silahları vb. bilgiler alınıp , npcler servera ekleniyor
Load Zone & Event // DB Part Initalize den alınan bilgiler oyuna ekleniyor
Start NPC THREAD // NPC Ler Çalıştırılıyor
Start Accepting // Gelecek bağlantı izinleri onaylanıyor
DefaultInit // Aşağıdaki bölümden sağ tıkladığınızda kapat çıkan yere About bölümü ekliyor,ben olsam bende eklerdm :D

Gerisi zaten belli gördüğümüz AI Server :)


---------------------------------------------

Aşağıdaki kodda ise bir açıklama var.Minimize yani simge durumuna küçült butonu eklediğimizde programın hata verecegini
açıklayan bir kod.Sadece açıklama niteliği var,başka bir amacı yok ..


// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
**************
// Eger diyaloğunuza(görülen program) minimize butonu eklersen,iconu yenilemek için
// bazı kodlara ihtiyacın var.MFC Uygulamalarında belgele/göster modeli kullanılır.
// Bu framework ile otomatik olarak tamamlanır

Diyalog program açılınca karşınıza gelen yazı,buton ve diğer nesnelerin bulundugu formdur ..
Aşağıdaki kodda yukarıdaki açıklamanın yapıldıgını kanıtlıyor :

Kod:
		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
Minimize butonu oldugu için icon tekrar yükleniyor ...
---------------------------------------------
Aşağıdaki kod db de magic tablolarının hata mesajlarını belirtiyor ..
Kod:
if(MagicTableSet.IsBOF() || MagicTableSet.IsEOF()) {
		AfxMessageBox(_T("MagicTable Empty!"));
		return FALSE;
	}
Yukarıdaki kod magic tabloları boş ise yapılacka işlem.
IsBOF = Beginning of File = Dosya Baslangıcı
IsEOF = End of File = Dosya Bitişi

Açılan magic tablosunda başlangıç ile bitiş arasında değer yoksa "MagicTable Empty!" hatası verdiriliyor ..

***************
Kod:
	if( !MagicTableSet.Open() ) {
		AfxMessageBox(_T("MagicTable Open Fail!"));
		return FALSE;
	}
Kod:
Eğer(MagicTableSet.Acıldıgında() ) {
	MesajVer(_T("Magic Tablosu Açılamadı!"));
	döndür OLUMSUZ;
	}
Acıldıgında() dendiğinde Açıldıktan sonra boş ise anlamına geliyor.Ben bunu visual basicde :
Kod:
Dim var As String
rst.Open "Select * from magic where magicnum",conn,1,3
var = IsNull(rst!EnName) Then
MsgBox "Magic Tablosu Açılamadı!",vbCritical
rst.Close

Şeklinde kodlardım.Aynı mantık ve aynı işe yarıyor,ama malesef biz bir AI Server yazamıyoruz :D

---------------------------------------------
Aşağıdaki kodda db deki skill bilgileri alınıp , AI Serverın hafızasına aktarılıyor.Yani bilgiler değişkenlere alınıyor ..
Kod:
MagicTableSet.MoveFirst(); // AI Server Hafızasının Başına Gidiliyor

	while( !MagicTableSet.IsEOF() ) // Hafıza Sonu Gelene Kadar Aşağıdaki Adımları Yapmasını Istiyor
	{
		_MAGIC_TABLE* pTableMagic = new _MAGIC_TABLE; // pTableMagic değişkeninin MAGIC tablosu olarak atıyor
				
		pTableMagic->iNum = MagicTableSet.m_MagicNum;
		pTableMagic->bMoral = MagicTableSet.m_Moral;
		pTableMagic->bSkillLevel = MagicTableSet.m_SkillLevel;
		pTableMagic->sSkill = MagicTableSet.m_Skill;
		pTableMagic->sMsp = MagicTableSet.m_Msp;
		pTableMagic->sHP = MagicTableSet.m_HP;
		pTableMagic->bItemGroup = MagicTableSet.m_ItemGroup;
		pTableMagic->iUseItem = MagicTableSet.m_UseItem;
		pTableMagic->bCastTime = MagicTableSet.m_CastTime;
		pTableMagic->bReCastTime = MagicTableSet.m_ReCastTime;
		pTableMagic->bSuccessRate = MagicTableSet.m_SuccessRate;
		pTableMagic->bType1 = MagicTableSet.m_Type1;
		pTableMagic->bType2 = MagicTableSet.m_Type2;
		pTableMagic->sRange = MagicTableSet.m_Range;
		pTableMagic->bEtc = MagicTableSet.m_Etc;
MAGIC tablosundaki ->iNum Sekmesi = MagicTableSet(AI Server Hafızası).m_MagicNum
Yani tabloyu kendine yükleyerek oyunda kullandıgınız zaman cliente ne yollayacak,ne alacak onları ezberliyor ..


--------------------------------------------

Aşağıdaki sub altında EOF ve BOF kontrolleri MakeWeapon tablosu için yapılıyor.Ben ykarıda MAGIC için anlatmıştım ..
Kod:
BOOL CServerDlg::GetMakeWeaponItemTableData()
{

Gene EOF ve BOF kontrolleri arasında tablo boşmu dolumu kontrol ediliyor ve tablo sonuna kadar MAKEWEAPON tablosundaki
bilgiler MAGIC gibi ezberleniyor ..

-------------------------------------------
Şöyle bakıldığında AI Server aslında hiçbir işe yaramıyor gibi gözüküyor.Aslında ebenezerden daha fazla işlevi var.

Ebenezer > Oyunu Yönetir
AI Server > Kullanıcıyı Yönetir
**
Ebenezer > Savas Açar
AI Server > Savasta Kosar
**
Ebenezer > Notice Gecer
AI Server > Notice Okur
**
Ebenezer > Party Açar
AI Server > Party Lideri Olur
**
Ebenezer > CZ De Adam Oldurdugunu Yazar
AI Server > CZ De Adam Öldürür
**
Ebenezer > Karakter Açar
AI Server > Karakteri Oynar
**
Ebenezer > Rental a Item Koyar
AI Server > Itemi Kullanır
**
Ebenezer > Bir halı
AI Server > Onu oyuna seren bir kadın

Bunların hepsi birbiriyle bağlantılı .. Ayrıca AI Serverın kodlarını yazmadıgım birkaç özelliği daha :

1-) Çoklu bağlantı için portları açar :

Aslında en önemli işlevi bu,yoksa AI Server ın işlevlerini ebenezere yükleyebilirlerdi.Programlama dillerinde winsock kullananlar
bileceklerdir.Local portta 1 den fazla port dinleyemezsiniz.Diğer bir port için baska bir winsock açmalısınız.Ve winsock için
çoklu bağlantı yapmak oldukça zordur.Irc kanallarının kullandıgı mantık gibi.Düşünün , 1 kişilik koltuğa 100 kişi oturacaksınız.
AI Server işte 1. kişi oturduktan sonra yanına başka bir koltuk daha ekleyerek sizi oraya oturtuyor.Oturuncada ebenezer
sizi oyuna alıyor .. En basit mantığı bu , yani kullanıcıların server ile bağlantısını AI Server yönetiyor ...

2-) Kullanıcı İşlemlerini kayıt eder :

Level atladığınızı,np aldığınızı,canınızın azaldığını,hareket ettiğinizi vb. karakter işlemlerini veritabanına yazar.Ebenezer söyler ,
o yazar.


3-) Karakter Bilgilerini Kontrol Eder :

Oyunda öldüğünüz zaman ( bunu hp niz 0 a düştüğünde anlıyor ) ebenezerden aldıgın bilgileri uygular.Yani ebenezer açıklamalarında
yazmıştım öldüğünde para ikiye bölününüyordu .. AI Serverda , adamın öldüğünde ne yapılacagını ebenezere soruyor.Ebenezerde ona ;
kodlandığı gibi " Ikiye böl parasını tekrar yaz" diyor ve ölen adamın parası ikiye bölünüp,veritabanına kayıt ediliyor ..

4-) Savaş Bilgilerini Kontrol Eder :

Savaşta yukarıdan geçen "Karus 50 Elmorad Öldürdü , Elmorad 60 Karus Öldürdü" ve "[TR],[Trayhoper] Karus Warder1 i Kesti !"
bilgileri AI Serverdan ebenezere aktarılır.Ebenezerde bunları yukarıdan notice olarak geçer ve kullanıcıyı bilgilendirir .. Ayrıca
ebenezer savaşı kapattığı zaman AI Servera " MAP Dosyasını Kapat" komutu gönderir ve AI Server bütün kullanıcıların zone larını
değiştirerek luferson ve emc ye ışınlar.BattleZone haritasını kapatır ve battlezone kapanınca lunardan geçiş olmaz ...


5-) Party Islemlerini Kontrol Eder :

Party oluşturdugunuzda , party sildiğinizde , partye biri girdiğinde ve biri çıktığında yapılacakalrı AI Server yapar.AI Server
biri partyden ayrıldıgında party sayısından 1 azaltır ve client de ayrılan kişinin adını listeden siler.Oluşturulan her party ye bir
Party NO verir ve loglara yazar.Lider CURRENTUSER dan silindiğinde party yi bir altındaki kişiye devreder , Lider CURRENTUSER dan
silinmeden party ile bağlantısı kesildiğinde party bozulur.Bu bozulma işlemine zone değiştirmeleri dahil değildir.Çünkü baska bir haritaya
geçtiğiniz zaman Client Information [1] bilgilerini yüklemeden oyunda gözükmezsiniz.Yani DC olmuş gibi olursunuz.Bu ufak 2,3 saniyelik arada
atılan pm ler failed to connect verir ve Information yüklenmeye baslandıgı anda oyuna girersiniz.CZ de hareketsiz adamları görürsünüz.O adamlar
aslında oyunda olup , clientleri Information yüklemesinde olanlardır.Character Data yüklenip , Information a geçildiğinde karakter oyunda gözükür :)


6-) Clanları Kontrol Eder :

Yukarıda baştan sonra kadar skilleri yüklediği gibi ebenezerde clanları yükler.Ebenezer clanları yükledikten sonra karakter birine clan teklifi
gönderdiğinde AI Serverdan > Client e bir mesaj gönderilir ve teklif gönderilen kişinin ekranında onay mesajı çıkar.Teklifi kabul ederse 1 ,
etmezse client 0 değeri döndürür ve AI Servera yollar.Teklif kabul edildi diyelim,client AI Servera 1 gönderir.AI Server 1 i alır,yüklenen
ve kullanıcının oynadığı karakter adını,karakter np sini ve clan adını ebenezere yollar.Ebenezer yüklediği KNIGHTS tablosuna bilgileri yazar.
İşlem başarılı olursa kullanıcı clana girer.Olmazsa "This user is already in clan" mesajı gösterilerek kullanıcının zaten clanda oldugu acıklanır.
Başka türlü hata verme olasılıgının olmadıgını dusunmusler sanırım kodlarda böyle yazıyor :)


7-) Dropları Yükler :


Ebenezerin yüklediği canavarlara düşme oranları ile birlikte düşecek itemi yollar.Bu 10 ile çarpa olayınıda şuna bağlıyorum;Droplar yüklenirken
düşecek itemin item kodu belli olduğu için ve sadece sayıdan oluştugu için int olarak ( integer - sayı ) olarak tanımlanıp yazılıyor.Ama düşme oranları
Long ( Longer - Uzun ) olarak tanımlanıp yazılıyor.Programlama dillerinde sonucu 10.000 den yüksek çıkacak matematiksel işlemleri değişkene almadan
yapamazsınız.Type Mismatch ( Uyumsuzluk ) hatası verir.Yani bu tamamen kasıtlı yapılmış birşey ve kodlarda hata yok.Bilgisayar sistemlerinin
zorunlu bir davranışı yüzünden bu şekilde yazılmış :)


AI Serverımız işte bu işlemleri yapıyor :) Geri kalan şeyleri aujard ve ebenezer aralarında paylaşıyor.Kısacası AIServerın ana mantığı kullanıcıyı yönetmek ve kapsamına girmediği ve yapamadığı diğer kullanıcıları ebenezere iletmek.AI Serverdan savaş açılmaz,ama savaş açıldığında ebenezer AI Servera gönderir ve savaş haritasını o açar.Clan teklifi gelir ebenezer clana sokamaz.Çünkü kimi sokacağını ve kaç np eklenecegini bilmez.AI Serverda ebenezere bu bilgileri gönderir ve ebenezer yazar.Yani hep yardımlaşarak çalışırlar.Bütün yapabileceklerini tek başlarına yapmaları gerekmez.AI Server 1 kullanıcıyı yönetir,Ebenezer bütün serverın kullandığı işlemleri yönetir.

Umarım kafanızda takılan soruları biraz olsun aydınlatabilmişimdir.Herkes diyor,ebenezer,aujard,aiserver ve version manager diye ama kimse
tam olarak ne işe yaradıklarını ve ne yaptıklarını bilmiyor .. Aujard yazısında görüşmek üzere :)

 
Son düzenleme:
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

okudum teşekkürler..
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

Teşekürler yararlı bilgiler.
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

notice geçer we sonra okur okuyan ai serwer neden o zaman ai serwer daha önce açılıor ;) :D
al sana soru :D

Teşekürler epey uzun bir makale
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

güzel paylaşım saol
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

notice geçer we sonra okur okuyan ai serwer neden o zaman ai serwer daha önce açılıor ;) :D
al sana soru :D

Teşekürler epey uzun bir makale

aiserverver açıldığı andan itibaren okumuyor , Ebenezer notice geçtiğinde ai servera oku diyor , oda okuyor :D
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

Eline Saglık Devamını Bekliyorum Dicemde Login Aujard önemli deil :D
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

Teşekkürler Tray harika paylaşım Login ile Aujardıda açıklarsan qüzeL olur ! (repin verildi)
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

Süper tek kelime ile ama benim işime yaramaz..
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

ya arkadaşalr bunlar kimsenin işine yaramaz.Ben sadece nerde neyi , nasıl yapıyor bilmenizi istiyorum ..
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

Tray Bu Version Manager ile Exe arasındaki ilişki ile ilgili bişeyler açıklayabilirmisin ?
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

bilgi için teşekkürler harika açıklamışsın yalnız benim sormak istediğim bi soru var belirttiğin gibi magic tablolarını ai server yüklüyor ve oyunda bazı skiller problemli çalışıyor ör: warrior bacak kırma mage blizzard gibi bu skiller asla rakibi yavaşlatmıyor buda ai serverin magic_type4 tablesindeki speed kolonunu hatalı okumasındanmı kaynaklanıyor :) merak ettimde
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

paylasım için tesekkurler
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

Tray Bu Version Manager ile Exe arasındaki ilişki ile ilgili bişeyler açıklayabilirmisin ?

Client ile login arasında sadece id ve pass alışverişi oluyor.Buda ACCOUNT_LOGIN prosedüründe yazılana göre biçimlendiriliyor.Yani client version manager a

ID = Burak
Pass = Tray

diyor,login de ACCOUNT_LOGIN prosedüründe yapılacakları yapıyor.Basit birşey yani version managerın asıl bağlantısı aujard ile.Aujardı açmadan önce version managerı kapatırsan billing server hatası alırsın :)

bilgi için teşekkürler harika açıklamışsın yalnız benim sormak istediğim bi soru var belirttiğin gibi magic tablolarını ai server yüklüyor ve oyunda bazı skiller problemli çalışıyor ör: warrior bacak kırma mage blizzard gibi bu skiller asla rakibi yavaşlatmıyor buda ai serverin magic_type4 tablesindeki speed kolonunu hatalı okumasındanmı kaynaklanıyor :) merak ettimde

hatalı okumasından olacagını zannetmiyorum çünkü onu hatalı okusaydı,diğer bütün skilleri hatalı okurdu.Kodlarda da gösterdiğim gibi hepsini aynı anda hafizaya alıyor,tek tek almıyor.Ama benim açıkladıklarım 1098 sourceları ve 1098 da leg cutting çalışıyordu.Yani 1299 çalıştırmak için sourceları incelemem gerekir ve ben öyle birşey olacagını zannetmiyorum.DB den kaynaklanan bir sorundur büyük ihtimal :)
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

ai serverde çok bedavacıymış haa ebenzer yapıyor ai server kullanıyor :D
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !


-----------------------------------------------
Bu kodda canınız ile alakalı birşey.Sanırım bu town atarken filan canınızın yarıdan aşağı kontrolü bu kod ile yapılıyor ..

#define MORAL_GOOD 0x01
#define MORAL_BAD 0x02
#define MORAL_NEUTRAL 0x03

-----------------------------------------------


Ne atmışın ha :D
#define ile değişmeyen değişken tanımlarsın, matematikteki "sabit" yani. En basitinden P.V = n.R.T formulündeki "R" sayısı "constant" yani "sabit"tir.

#define R (22.4/273)

yani:icon_razz:

Bir de 10000 ile ilgili bir şeyler söylemişsin;

PHP:
<?
eval("echo (10000 + 1005621354);");
?>

PHP:
<?
echo (10000 + 1005621354);
?>

buyur ikisi de gayet güzel çalışıyor...


----------------
Dinlediğim Şarkı : Soulfly - One Nation

----------------
Dinlediğim Şarkı : Cradle of Filth - Heaven Torn Asunder
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

Teşekkürler buraq ama bunlar ne işimize yarıcak hö
Sourceleri Varmı Sanki AI Server'in hö
Yoksa benim bilmediğim bişi mi var :D:D
 
Cevap: AI Serverın Oyun Icınde Yaptıgı Islem Kodlarının Detaylı Acıklamaları !

Ne atmışın ha :D
#define ile değişmeyen değişken tanımlarsın, matematikteki "sabit" yani. En basitinden P.V = n.R.T formulündeki "R" sayısı "constant" yani "sabit"tir.

#define R (22.4/273)

yani:icon_razz:

Bir de 10000 ile ilgili bir şeyler söylemişsin;

PHP:
<?
eval("echo (10000 + 1005621354);");
?>

PHP:
<?
echo (10000 + 1005621354);
?>

buyur ikisi de gayet güzel çalışıyor...


----------------
Dinlediğim Şarkı : Soulfly - One Nation

----------------
Dinlediğim Şarkı : Cradle of Filth - Heaven Torn Asunder

php den bahsetmiyorum.php de değişkeni direkt kullanabiliyorsun zaten.visual basic de 10.000 * 10 işlemi yapamazsın.

Ayrıca ben define için sabit veya değişken demedim.Yani birşeyler bulmak için birşeylerden birşeyler çıkartıyorsun berkin hö Belki adamın hpsi fullken MORAL_GOOD 0x01

sabiti devreye giriyor ? Ben bunu inkar etmedim :)
 
Geri
Üst Alt