1534, 1886 projeleriniz ile ilgili ..

  • Konbuyu başlatan Konbuyu başlatan ediz3
  • Başlangıç tarihi Başlangıç tarihi

  • HyperFilter | DoS Protection | DDoS Protection | DoS Mitigation | DDoS Mitigation | AntiDoS | AntiDDoS | Proxy Shielding
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
..



Ulan database sorunsuz die sattı nero nun verdi buglu db yi verdi ne diyim lan şimdi ben buna
 
bugsuz db daha yok bildiyime göre yazik olmus nedeyim
 
Sql server 2000 kursam pc ye sorun olurmu
 
Olmaz kardesim kur
 
ulan bana dedinki bu database sorunsuz db yi bi açtım Büyük oranda bug ulan banka hesabında bende bilişim suçlarına yolladım yakında çalarlar kapını



---------- Yorum eklendi 17:04'da ---------- Önceki yorum 17:03'da ----------



gelmiş burda bide çok şey biliyormuş gibi konuşuyor anca foto çek milleti kazıkla yanına kalıcağınımı zannediyorsun weled.
 
Rookie doğru söylüyorsanda, sen ben bilgisi olmayan arkadaşlara yardım etmezsek nasıl geliştirecekler kendilerini ? 🙂



bravo çok doğru konuştun bende temel var ama c# üzerine c++ da fazla yok ama anladığım kadarıyla kodları az çok anlıyorum. anladığım kadarıyla sorunları çözmeye çalışıyorum.
 
yapıyor zaten boyle sucu yokmus gibi konustuguna bakmayın 18 yasındakı velet kalkmıs heckerlık dolancırıcılık pesınde kosuyor kendı meslegıyle ovunurler ankaraya yolum dusecek ıllakı cankaya or-an sıtesıne ıllakı zıyarete gelıcem ben bu rada yaptıklarının bırde otekı tarafıda var nereyadar
 
ediz doruk paylassanize ebenezeri buying olmus ebenezeri😀



Arkadaşlar Buying Merchant Bugu Fixlemek için MerchantMode.cpp dosyasına giriniz içindekini siliniz ve aşagıda ki Kod 1 ile Degiştiriniz



Kod:
#include "lzf.h"

#include "stdafx.h"

#include "ebenezer.h"

#include "MerchantMode.h"

#include "User.h"

#include "GameDefine.h"

#include "PacketDefine.h"

#include "EbenezerDlg.h"

#include "Define.h"

#ifdef _DEBUG

#undef THIS_FILE

static char THIS_FILE[]=__FILE__;

#define new DEBUG_NEW

#endif







CMerchantMode::CMerchantMode()

{

	m_pMain = NULL;

	m_pSrcUser = NULL;

}



CMerchantMode::~CMerchantMode()

{

}



void CMerchantMode::MerchantModePacket( char* pBuf )

{

	int index = 0, i=0, send_index = 0;

	char send_buff[1024]; memset( send_buff, NULL, send_index );



	CUser* pUser = NULL;



	int type = GetByte( pBuf, index );

	switch( type ) {

		case MERCHANT_OPEN:

			MerchantModeOpen( pBuf+index );

			break;

		case MERCHANT_CLOSE:

			MerchantModeClose();

			break;

		case MERCHANT_ITEM_ADD:

			MerchantItemAdd( pBuf+index );

			break;

		case MERCHANT_ITEM_CANCEL:

			MerchantItemCancel( pBuf+index );

			break;

		case MERCHANT_ITEM_LIST:

			MerchantItemListReq( pBuf+index );

			break;

		case MERCHANT_ITEM_BUY:

			MerchantItemBuy( pBuf+index );

			break;

		case MERCHANT_INSERT:

			MerchantModeInsert( pBuf+index );

			break;

		case MERCHANT_CANCEL:

			MerchantModeTradeCancel();

			break;

/*

		case BUY_MERCHANT_OPEN:

			SetByte( send_buff, WIZ_MERCHANT, send_index );

			SetByte( send_buff, BUY_MERCHANT_OPEN, send_index );

			SetByte( send_buff, 0x01, send_index );

			m_pSrcUser->Send( send_buff, send_index );

			break;

		case BUY_MERCHANT_INSERT:

			// 2 item > itemid > count > gold

			// SEND-->68+22+02+51934F09+0100+6F000000+F0D70D16+5000+6F000000

			SetByte( send_buff, WIZ_MERCHANT, send_index );

			SetByte( send_buff, BUY_MERCHANT_INSERT, send_index );

			SetByte( send_buff, 0x01, send_index );

			m_pSrcUser->Send( send_buff, send_index );

			break;

		case BUY_MERCHANT_CANCEL:

			SetByte( send_buff, WIZ_MERCHANT, send_index );

			SetByte( send_buff, BUY_MERCHANT_CANCEL, send_index );

			SetByte( send_buff, m_pSrcUser->GetSocketID(), send_index );

			m_pSrcUser->Send( send_buff, send_index );

			break;

*/

	}

}



void CMerchantMode::MerchantModeOpen( char* pBuf )

{

	int index = 0, send_index = 0;

	char send_buff[128]; memset( send_buff, NULL, send_index );



	if( m_pSrcUser->m_iMerchantMode != -1 ) return;

	

	SetByte( send_buff, WIZ_MERCHANT, send_index );

	SetByte( send_buff, MERCHANT_OPEN, send_index );



	if( m_pSrcUser->m_pUserData->m_bLevel < 30 )

		SetShort( send_buff, 30, send_index ); 

	else

		SetShort( send_buff, 1, send_index ); 



	m_pSrcUser->Send( send_buff, send_index );

}



void CMerchantMode::MerchantModeClose()

{

	int index = 0, send_index = 0;

	char send_buff[128]; memset( send_buff, NULL, send_index );

	

	for(int i=0; i<MAX_LIST_ITEM; i++ ) {

		m_pSrcUser->m_sMerchantArray[i].nNum = 0;

		m_pSrcUser->m_sMerchantArray[i].sDuration = 0;

		m_pSrcUser->m_sMerchantArray[i].sCount = 0;

		m_pSrcUser->m_sMerchantArray[i].sGold = 0;

	}



	SetByte( send_buff, WIZ_MERCHANT, send_index );

	SetByte( send_buff, MERCHANT_CLOSE, send_index );

	SetShort( send_buff, m_pSrcUser->GetSocketID(), send_index );

	m_pMain->Send_Region( send_buff, send_index, (int)m_pSrcUser->m_pUserData->m_bZone, m_pSrcUser->m_RegionX, m_pSrcUser->m_RegionZ, NULL, false );



	m_pSrcUser->m_iMerchantMode = -1; m_pSrcUser->m_iMerchantUser = -1;

}



void CMerchantMode::MerchantItemAdd( char* pBuf )

{

	int index = 0, send_index = 0;

	char send_buff[128]; memset( send_buff, NULL, send_index );



	DWORD item = GetDWORD( pBuf, index );

	BYTE count = GetShort( pBuf, index );

	DWORD gold = GetDWORD( pBuf, index );

	BYTE islot = GetByte( pBuf, index );

	BYTE mslot = GetByte( pBuf, index );



	_ITEM_TABLE* pTable = NULL;

	pTable = m_pMain->m_ItemtableArray.GetData( item );

	if( !pTable ) return;



	SetByte( send_buff, WIZ_MERCHANT, send_index );

	SetByte( send_buff, MERCHANT_ITEM_ADD, send_index );

	

	m_pSrcUser->m_sMerchantArray[(int)mslot].nNum = item;

	m_pSrcUser->m_sMerchantArray[(int)mslot].sDuration = pTable->m_sDuration;

	m_pSrcUser->m_sMerchantArray[(int)mslot].sCount = count;

	m_pSrcUser->m_sMerchantArray[(int)mslot].sGold = gold;



	SetShort( send_buff, 0x01, send_index );

	SetDWORD( send_buff, m_pSrcUser->m_sMerchantArray[(int)mslot].nNum, send_index );

	SetShort( send_buff, m_pSrcUser->m_sMerchantArray[(int)mslot].sCount, send_index );

	SetShort( send_buff, m_pSrcUser->m_sMerchantArray[(int)mslot].sDuration, send_index );

	SetDWORD( send_buff, m_pSrcUser->m_sMerchantArray[(int)mslot].sGold, send_index );

	SetByte( send_buff, islot, send_index );

	SetByte( send_buff, mslot, send_index );

	m_pSrcUser->Send( send_buff, send_index );

	// UNKNOW (68)-->68+03+EEFF > Sealed items cannot be traded.

}

	

void CMerchantMode::MerchantItemCancel( char* pBuf )

{

	int index = 0, send_index = 0;

	char send_buff[128]; memset( send_buff, NULL, send_index );



	if( m_pSrcUser->m_iMerchantMode != -1 ) return;

	

	BYTE mslot = GetByte( pBuf, index );



	m_pSrcUser->m_sMerchantArray[(int)mslot].nNum = 0;

	m_pSrcUser->m_sMerchantArray[(int)mslot].sDuration = 0;

	m_pSrcUser->m_sMerchantArray[(int)mslot].sCount = 0;

	m_pSrcUser->m_sMerchantArray[(int)mslot].sGold = 0;



	SetByte( send_buff, WIZ_MERCHANT, send_index );

	SetByte( send_buff, MERCHANT_ITEM_CANCEL, send_index );

	SetShort( send_buff, 0x01, send_index );

	SetByte( send_buff, mslot, send_index );

	m_pSrcUser->Send( send_buff, send_index );

}



void CMerchantMode::MerchantItemListReq( char* pBuf )

{

	int index = 0, send_index = 0, i = 0;

	char send_buff[128]; memset( send_buff, NULL, send_index );

	

	CUser* pUser = NULL;



	int user = GetShort( pBuf, index );

	if( user < 0 || user >= MAX_USER ) return;



	pUser = (CUser*)m_pMain->m_Iocport.m_SockArray[user];

	if( !pUser ) return;



	if( pUser->m_iMerchantMode == -1 ) return;

	if( pUser->m_iMerchantUser != -1 ) goto fail_return;



	pUser->m_iMerchantUser = m_pSrcUser->GetSocketID();

	m_pSrcUser->m_iMerchantUser = user;



	SetByte( send_buff, WIZ_MERCHANT, send_index );

	SetByte( send_buff, MERCHANT_ITEM_LIST, send_index );

	SetShort( send_buff, 0x01, send_index );

	SetShort( send_buff, user, send_index );



	for(i=0; i<MAX_LIST_ITEM; i++ ) {

		SetDWORD( send_buff, pUser->m_sMerchantArray[i].nNum, send_index );

		SetShort( send_buff, pUser->m_sMerchantArray[i].sCount, send_index );

		SetShort( send_buff, pUser->m_sMerchantArray[i].sDuration, send_index );

		SetDWORD( send_buff, pUser->m_sMerchantArray[i].sGold, send_index );

		SetDWORD( send_buff, 0, send_index );

	}

	m_pSrcUser->Send( send_buff, send_index );



return;



fail_return:

	SetByte( send_buff, WIZ_MERCHANT, send_index );

	SetByte( send_buff, MERCHANT_ITEM_LIST, send_index );

	SetByte( send_buff, 0xF9, send_index );

	SetByte( send_buff, -1, send_index );

	m_pSrcUser->Send(send_buff,send_index);

}



void CMerchantMode::MerchantItemBuy( char* pBuf )

{

	int index = 0, send_index = 0;

	char send_buff[128]; memset( send_buff, NULL, send_index );



	// NERO

}



void CMerchantMode::MerchantModeInsert( char* pBuf )

{

	int index = 0, send_index = 0;

	char send_buff[128]; memset( send_buff, NULL, send_index );

	char mText[40]; memset( mText, 0x00, 40 );



	SetByte( send_buff, WIZ_MERCHANT, send_index );

	SetByte( send_buff, MERCHANT_INSERT, send_index );

	SetShort( send_buff, 0x01, send_index );



	int mLength = GetShort( pBuf, index );

	if( mLength > 40 ) return;

	GetString( mText, pBuf, mLength, index );



	SetShort( send_buff, mLength, send_index );

	SetString( send_buff, mText, mLength, send_index);



	SetShort( send_buff, m_pSrcUser->GetSocketID(), send_index );

	SetByte( send_buff, 0, send_index ); // 0: Normal - 1: Gold



	for(int i=0; i<MAX_SHOW_ITEM; i++ ) {

		SetDWORD( send_buff, m_pSrcUser->m_sMerchantArray[i].nNum, send_index );

	}

	m_pMain->Send_Region( send_buff, send_index, (int)m_pSrcUser->m_pUserData->m_bZone, m_pSrcUser->m_RegionX, m_pSrcUser->m_RegionZ, NULL, false );



	m_pSrcUser->m_iMerchantMode = 1; m_pSrcUser->m_iMerchantUser = -1;

}



void CMerchantMode::MerchantModeTradeCancel()

{

	int index = 0, send_index = 0;

	char send_buff[128]; memset( send_buff, NULL, send_index );



	CUser* pUser = (CUser*)m_pMain->m_Iocport.m_SockArray[m_pSrcUser->m_iMerchantUser];

	

	if( m_pSrcUser->m_iMerchantUser < 0 || m_pSrcUser->m_iMerchantUser >= MAX_USER ) return;



	if(!pUser || m_pSrcUser->m_iMerchantUser == -1) {

		m_pSrcUser->m_iMerchantUser = -1;

		return;

	}

	pUser->m_iMerchantUser = -1;



	SetByte( send_buff, WIZ_MERCHANT, send_index );

	SetByte( send_buff, MERCHANT_CANCEL, send_index );

	SetShort( send_buff, m_pSrcUser->GetSocketID(), send_index );

	m_pSrcUser->Send( send_buff, send_index );

}



void CMerchantMode::RequestMerchantUserIn( char *pBuf )

{

	int index = 0, uid = -1, user_count = 0, buff_index = 4, m_count = 0;

	char buff[1024*10]; memset( buff, NULL, 1024*10 );



	CUser* pUser = NULL;



	user_count = GetShort( pBuf, index );

	for( int i=0; i<user_count; i++ ) {

		uid = GetShort( pBuf, index );

		if( uid < 0 || uid >= MAX_USER )

			continue;

		if( i > 1000 ) 

			break;

		

		pUser = (CUser*)m_pMain->m_Iocport.m_SockArray[uid];

		if (!pUser) continue;

		if ( pUser->m_iMerchantMode == -1 ) continue;



		SetShort( buff, uid, buff_index );

		SetByte( buff, 0, buff_index );

		SetByte( buff, 0, buff_index );

		SetDWORD( buff, pUser->m_sMerchantArray[0].nNum, buff_index );

		SetDWORD( buff, pUser->m_sMerchantArray[1].nNum, buff_index );

		SetDWORD( buff, pUser->m_sMerchantArray[2].nNum, buff_index );

		SetDWORD( buff, pUser->m_sMerchantArray[3].nNum, buff_index );

		m_count++;

	}



	int temp_index = 0;

	SetByte( buff, WIZ_MERCHANT_INOUT, temp_index );

	SetByte( buff, 0x01, temp_index );

	SetShort( buff, m_count, temp_index );



	if( buff_index < 500 )

		m_pSrcUser->Send( buff, buff_index );

	else

		m_pSrcUser->SendCompressingPacket( buff, buff_index );

}



Bu Yukarıdaki Kodu ekledikden Sonra PacketDefine.h Dosyasına Giriyoruz Ve Oraya Aşagıdaki Kod2 Deki Bilgileri Giriyoruz



Kod:
#define MERCHANT_CHAT			0x0E

#define WIZ_MERCHANT			0x68	// Merchanting

#define WIZ_MERCHANT_INOUT		0x69	// Show merchant items

#define MERCHANT_OPEN			0x01

#define MERCHANT_CLOSE			0x02

#define MERCHANT_ITEM_ADD		0x03

#define MERCHANT_ITEM_CANCEL	0x04

#define MERCHANT_ITEM_LIST		0x05

#define MERCHANT_ITEM_BUY		0x06

#define MERCHANT_INSERT			0x07

#define MERCHANT_CANCEL			0x08



#define	BUY_MERCHANT_OPEN		        0x21

#define	BUY_MERCHANT_INSERT		0x22

#define	BUY_MERCHANT_CANCEL		0x27



İşlem Tamamdır Sorunsuzca Kullana Bilirsiniz
 
NERO Tarafından paylaşılan 1886 sourcelerde savas kısmı çalışmıyordu (yada bende sorun var, bendekiler çalışmadı!?). DB'de ZONE_INFO'ya ve EVENT tablolarına 101 olarak ekleyerek denedim ve çalıştırdım, yalnız bu sefer clientteki TBL'ler yüzünden 101 zonesi sorun veriyordu uğraşmalar ile db'de EVENT tablosunda bir kaç oynama sonucu 62 zonesini çalıştırdım..



Ama halen bir dünya BUG var..



Savas konusunda çalışma yapan oldumu bilgileri paylaşarak şu sorunları halledelim..



Ediz'in .evt dosylarınıda denedim halen savaslar sorunlu ve çalışmıyor.. Başlıca sorunlar ise aşağıdaki gibi..



* CAPTAIN çalışmıyor. kaptanlar seçildi diye notice geçiyor, amma velakin captan seçilmiyor..

* Warder v.s. kesince notice geçmiyor..

* Base kalelerinde kapılar v.s. çalışıyor, korkuluklar yok. Zindan kapıları yok..

* Savas başladıktan sonra lunar valley kapısı açık kalıyor..



Şu an tespit ettiklerim yukardaki gibi. Ayrıca sourcelerde Ebenezer .evt dosyalarını okuyor. Buradaki .evt dosyalarınıda yapılandırmamız lazım..



Birde sourcelerde gördüğüm halen mantık yürütemediğim bir konu. GM'de bir kaç komut aktif "/goto" , "/notice" ve "noticeall" bunun dışında zonechange yok mesela? ve sorucelerde yukardaki 3 komutuda bulamadım, hangi .cpp veya.h dosyasından komutları okuyor?



Ebenezer sourcelerde "EbenezerDlg.cpp" dosyasında konsol komutları olarak "/open" ve benzer bir kaçını tek bulabildim. 😀
 
Arkadaşlar başlıktaki gibi 2 versiyonun geliştirilmesine yardımcı olacağım sizlere.

Her hangi bi sorununuz olduğu zaman, resimle birlikte konu altına cevap yazın.

Dönüş yapılacaktır, iyi akşamlar..



KURBAN BAYRAMINIZ MÜBAREK OLSUN 🙂 :?:



Hocam bu işlerden anlıyorsanız eğer bunu geliştirip paylaşsanız, herkes faydalanır :rock:

 
1534 towerlar atak yapmıyor.
 
1534 towerlar atak yapmıyor.



UPDATE MAGIC_TYPE3

SET FirstDamage = - 10000

WHERE (iNum = 300139)





NOT : 10000 Yazan Yer İle Aynı Şekilde Editlersin

Kuleler 1 K Vurur Başka Şekildede Editleyebilirsin



---------- Yorum eklendi 13:10'da ---------- Önceki yorum 13:10'da ----------



Hocam bu işlerden anlıyorsanız eğer bunu geliştirip paylaşsanız, herkes faydalanır :rock:




elimden geldiğince yardımcı olacağım

sorunlarınızı resimli paylaşırsanız daha iyi olur.. :qqq:
 
yav bişi sorucam ilk sayfalarda source vermişiniz, o sourceyi paket dinleyerek mi elde ediyoruz bunları açıklasanız daha mantıklı bencce



---------- Yorum eklendi 13:59'da ---------- Önceki yorum 13:54'da ----------



bide bişi merak eediyoum, mesela diyelim savaşla ilgili değişiklikler yapıcam ama sourcede nerde oludğunu bilmitorum kodların onları nasıl buluyoruz
 
UPDATE MAGIC_TYPE3

SET FirstDamage = - 10000

WHERE (iNum = 300139)





NOT : 10000 Yazan Yer İle Aynı Şekilde Editlersin

Kuleler 1 K Vurur Başka Şekildede Editleyebilirsin



---------- Yorum eklendi 13:10'da ---------- Önceki yorum 13:10'da ----------







elimden geldiğince yardımcı olacağım

sorunlarınızı resimli paylaşırsanız daha iyi olur.. :qqq:



o kod yemiyor hoca. Pt ile np gelmiyor bir de.
 
yav bişi sorucam ilk sayfalarda source vermişiniz, o sourceyi paket dinleyerek mi elde ediyoruz bunları açıklasanız daha mantıklı bencce



---------- Yorum eklendi 13:59'da ---------- Önceki yorum 13:54'da ----------



bide bişi merak eediyoum, mesela diyelim savaşla ilgili değişiklikler yapıcam ama sourcede nerde oludğunu bilmitorum kodların onları nasıl buluyoruz



olldybug kullanımı öğren biraz
 
1886 da monsterlar ve bazı npcler gözükmüyor bir çözümü varmı ?
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst Alt
Reklam
Reklam