- Mesaj
- 196
- Çözümler
- 12
- Beğeni
- 266
- Puan
- 804
- Ticaret Puanı
- 0
Başlıktan da anlaşılacağı gibi, oyuna başlayanların itemlerini envanterine vermek istiyorum. MMOTutkunları Altyapı fileste bu kullanım ile itemleri vermiştim, fakat turkmmo v3 altyapı filesine geçiş yaptım, orada ise bir türlü çalıştıramadım. input_db.cpp ' de yaptığım değişiklikler.
En üste ekledim,
PlayerCreateSuccess içeriğide bu ,
En üste ekledim,
C++:
extern bool RaceToJob(unsigned race, unsigned* ret_job);
C++:
void CInputDB::PlayerCreateSuccess(LPDESC d, const char* data)
{
if (!d)
return;
TPacketDGCreateSuccess* pPacketDB = (TPacketDGCreateSuccess*)data;
if (pPacketDB->bAccountCharacterIndex >= PLAYER_PER_ACCOUNT)
{
d->Packet(encode_byte(HEADER_GC_CHARACTER_CREATE_FAILURE), 1);
return;
}
long lIndex = 0;
if (!CMapLocation::instance().Get(pPacketDB->player.x,
pPacketDB->player.y,
lIndex,
pPacketDB->player.lAddr,
pPacketDB->player.wPort))
{
sys_err("InputDB::PlayerCreateSuccess: cannot find server for mapindex %d %d x %d (name %s)",
lIndex,
pPacketDB->player.x,
pPacketDB->player.y,
pPacketDB->player.szName);
}
TAccountTable& r_Tab = d->GetAccountTable();
r_Tab.players[pPacketDB->bAccountCharacterIndex] = pPacketDB->player;
TPacketGCPlayerCreateSuccess pack;
pack.header = HEADER_GC_CHARACTER_CREATE_SUCCESS;
pack.bAccountCharacterIndex = pPacketDB->bAccountCharacterIndex;
pack.player = pPacketDB->player;
#ifdef ENABLE_NEWSTUFF
if (!g_stProxyIP.empty())
pack.player.lAddr = inet_addr(g_stProxyIP.c_str());
#endif
d->Packet(&pack, sizeof(TPacketGCPlayerCreateSuccess));
TPlayerItem t;
memset(&t, 0, sizeof(t));
t.window = INVENTORY;
t.count = 1;
t.owner = r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;
struct SInitialItem
{
BYTE pos;
DWORD dwVnum;
DWORD count;
};
const int MAX_INITIAL_ITEM = 10;
static SInitialItem initialItems[JOB_MAX_NUM][MAX_INITIAL_ITEM] =
{
{
{0, 11279, 0, 0, 0, 1,3000, 53,50, 23,10, 9,20, 39,15}, // Zirh Savaşçı
{1, 12249, 0, 0, 0, 21,20, 18,20, 22,20, 12,8, 7,8}, // Kafalik
{2, 15209, 0, 0, 0, 1,3000, 15,10, 7,8, 43,20, 44,20}, // Ayakkabi
{3, 14209, 0, 0, 0, 1,3000, 16,10, 23,10, 21,20, 22,20}, // Bilezik
{4, 299, 0, 0, 0, 72,45, 5,12, 6,12, 15,10, 16,10}, // Silah
{5, 16209, 0, 0, 0, 1,3000, 15,10, 10,30, 43,20, 44,20}, // Kolye
{6, 17109, 0, 0, 0, 8,20, 17,10, 45,20, 21,20, 22,20}, // Küpe
{10, 13049, 0, 0, 0, 5,12, 6,12, 43,20, 44,20, 17,10}, // Kalkan
},
{
{0, 11479, 0, 0, 0, 1,3000, 53,50, 23,10, 9,20, 39,15}, // Zirh Ninja
{1, 12389, 0, 0, 0, 21,20, 18,20, 22,20, 12,8, 7,8}, // Kafalik
{2, 15209, 0, 0, 0, 1,3000, 15,10, 7,8, 43,20, 44,20}, // Ayakkabi
{3, 14209, 0, 0, 0, 1,3000, 16,10, 23,10, 21,20, 22,20}, // Bilezik
{4, 1179, 0, 0, 0, 72,45, 5,12, 6,12, 15,10, 16,10}, // Silah
{5, 16209, 0, 0, 0, 1,3000, 15,10, 10,30, 43,20, 44,20}, // Kolye
{6, 17109, 0, 0, 0, 8,20, 17,10, 45,20, 21,20, 22,20}, // Küpe
{10, 13049, 0, 0, 0, 5,12, 6,12, 43,20, 44,20, 17,10}, // Kalkan
},
{
{0, 11679, 0, 0, 0, 1,3000, 53,50, 23,10, 9,20, 39,15}, // Zirh Sura
{1, 12529, 0, 0, 0, 21,20, 18,20, 22,20, 12,8, 7,8}, // Kafalik
{2, 15209, 0, 0, 0, 1,3000, 15,10, 7,8, 43,20, 44,20}, // Ayakkabi
{3, 14209, 0, 0, 0, 1,3000, 16,10, 23,10, 21,20, 22,20}, // Bilezik
{4, 299, 0, 0, 0, 72,45, 5,12, 6,12, 15,10, 16,10}, // Silah
{5, 16209, 0, 0, 0, 1,3000, 15,10, 10,30, 43,20, 44,20}, // Kolye
{6, 17109, 0, 0, 0, 8,20, 17,10, 45,20, 21,20, 22,20}, // Küpe
{10, 13049, 0, 0, 0, 5,12, 6,12, 43,20, 44,20, 17,10}, // Kalkan
},
{
{0, 11879, 0, 0, 0, 1,3000, 53,50, 23,10, 9,20, 39,15}, // Zirh Şaman
{1, 12669, 0, 0, 0, 21,20, 18,20, 22,20, 12,8, 7,8}, // Kafalik
{2, 15209, 0, 0, 0, 1,3000, 15,10, 7,8, 43,20, 44,20}, // Ayakkabi
{3, 14209, 0, 0, 0, 1,3000, 16,10, 23,10, 21,20, 22,20}, // Bilezik
{4, 5119, 0, 0, 0, 72,45, 5,12, 6,12, 15,10, 16,10}, // Silah
{5,, 16209, 0, 0, 0, 1,3000, 15,10, 10,30, 43,20, 44,20}, // Kolye
{6, 17109, 0, 0, 0, 8,20, 17,10, 45,20, 21,20, 22,20}, // Küpe
{10, 13049, 0, 0, 0, 5,12, 6,12, 43,20, 44,20, 17,10}, // Kalkan
}, // Şaman
#ifdef ENABLE_WOLFMAN_CHARACTER
{
{0, 21059, 0, 0, 0, 1,3000, 53,50, 23,10, 9,20, 39,15}, // Zirh Lycan
{1, 21529, 0, 0, 0, 21,20, 18,20, 22,20, 12,8, 7,8}, // Kafalik
{2, 15209, 0, 0, 0, 1,3000, 15,10, 7,8, 43,20, 44,20}, // Ayakkabi
{3, 14209, 0, 0, 0, 1,3000, 16,10, 23,10, 21,20, 22,20}, // Bilezik
{4, 6019, 0, 0, 0, 72,45, 5,12, 6,12, 15,10, 16,10}, // Silah
{5, 16209, 0, 0, 0, 1,3000, 15,10, 10,30, 43,20, 44,20}, // Kolye
{6, 17109, 0, 0, 0, 8,20, 17,10, 45,20, 21,20, 22,20}, // Küpe
{10, 13049, 0, 0, 0, 5,12, 6,12, 43,20, 44,20, 17,10}, // Kalkan
}, // Lycan
#endif
};
unsigned job = pPacketDB->player.byJob;
RaceToJob(job, &job);
for (int i = 0; i < MAX_INITIAL_ITEM; i++)
{
if (initialItems[job][i].dwVnum == 0)
continue;
t.id = ITEM_MANAGER::instance().GetNewID();
t.pos = initialItems[job][i].pos;
t.count = initialItems[job][i].count;
t.vnum = initialItems[job][i].dwVnum;
t.alSockets[0] = initialItems[job][i].socket0;
t.alSockets[1] = initialItems[job][i].socket1;
t.alSockets[2] = initialItems[job][i].socket2;
t.aAttr[0].bType = initialItems[job][i].attr_type0;
t.aAttr[0].sValue = initialItems[job][i].attr_value0;
t.aAttr[1].bType = initialItems[job][i].attr_type1;
t.aAttr[1].sValue = initialItems[job][i].attr_value1;
t.aAttr[2].bType = initialItems[job][i].attr_type2;
t.aAttr[2].sValue = initialItems[job][i].attr_value2;
t.aAttr[3].bType = initialItems[job][i].attr_type3;
t.aAttr[3].sValue = initialItems[job][i].attr_value3;
t.aAttr[4].bType = initialItems[job][i].attr_type4;
t.aAttr[4].sValue = initialItems[job][i].attr_value4;
db_clientdesc->DBPacketHeader(HEADER_GD_ITEM_SAVE, 0, sizeof(TPlayerItem));
db_clientdesc->Packet(&t, sizeof(TPlayerItem));
}
LogManager::instance().CharLog(pack.player.dwID, 0, 0, 0, "CREATE PLAYER", "", d->GetHostName());
}
Son düzenleme: