Doruk kadar oruspu cocu bi insan mı var
küfür etme len bayram bayram çocukmusun sen 😡:
Doruk kadar oruspu cocu bi insan mı var
Seviyeni ortaya koydun daha ipleyip cevap vermem.
Rookie doğru söylüyorsanda, sen ben bilgisi olmayan arkadaşlara yardım etmezsek nasıl geliştirecekler kendilerini ? 🙂
ediz doruk paylassanize ebenezeri buying olmus ebenezeri😀
#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 );
}
#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
Rookie doğru söylüyorsanda, sen ben bilgisi olmayan arkadaşlara yardım etmezsek nasıl geliştirecekler kendilerini ? 🙂
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 🙂 :?:
1534 towerlar atak yapmıyor.
Hocam bu işlerden anlıyorsanız eğer bunu geliştirip paylaşsanız, herkes faydalanır :rock:
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:
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