- Mesaj
- 418
- Çözümler
- 8
- Beğeni
- 334
- Puan
- 839
- Ticaret Puanı
- 0
Herkese merhabalar mevcut kodumda başlangıç itemlerini alabiliyorum sorun yok ancak rüzgarın ayakkabısı gibi binek gibi süreli itemleri verdiremedim bu konuda yardımcı olabilir misiniz. Kullanmak isteyenler bu şekilde kullanabilir efsunlu ve giyili bir şekilde geliyor itemelr
Bu 2 item binek ve rüzgarın ayakkabısı 7. ve 8. slota gelmesi gerekiyordu.
{INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},<br>
{INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},<br>
Bu 2 item binek ve rüzgarın ayakkabısı 7. ve 8. slota gelmesi gerekiyordu.
{INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},<br>
{INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},<br>
input_db.cpp:
TPlayerItem t;
memset(&t, 0, sizeof(TPlayerItem));
t.window = INVENTORY;
t.owner = r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;
t.count = 1;
struct SInitialItem
{
BYTE window; // EQUIPMENT / INVENTORY
short pos; // WEAR_* veya inventory slot
DWORD count;
DWORD dwVnum;
long socket0;
long socket1;
long socket2;
long socket3;
BYTE attr_type0; short attr_value0;
BYTE attr_type1; short attr_value1;
BYTE attr_type2; short attr_value2;
BYTE attr_type3; short attr_value3;
BYTE attr_type4; short attr_value4;
};
const int MAX_INITIAL_ITEM = 17;
static SInitialItem initialItems[JOB_MAX_NUM][MAX_INITIAL_ITEM] =
{
// WARRIOR
{////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
{EQUIPMENT, WEAR_BODY, 1, 9001, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_HEAD, 1, 12209, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_FOOTS, 1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_WRIST, 1, 14009, 0,0,0,0, 1,2000,0,0,0,0,0,0},
{EQUIPMENT, WEAR_WEAPON, 1, 19, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_NECK, 1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_EAR, 1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
{INVENTORY, 0, 1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},
},
// ASSASSIN
{////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
{EQUIPMENT, WEAR_BODY, 1, 9002, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_HEAD, 1, 12349, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_FOOTS, 1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_WRIST, 1, 14009, 0,0,0,0, 1,2000,0,0,0,0,0,0},
{EQUIPMENT, WEAR_WEAPON, 1, 1009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_NECK, 1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_EAR, 1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
{INVENTORY, 0, 1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},
},
// SURA
{////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
{EQUIPMENT, WEAR_BODY, 1, 9003, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_HEAD, 1, 12489, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_FOOTS, 1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_WRIST, 1, 14009, 0,0,0,0, 1,2000,0,0,0,0,0,0},
{EQUIPMENT, WEAR_WEAPON, 1, 19, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_NECK, 1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_EAR, 1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
{INVENTORY, 0, 1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},
},
// SHAMAN
{////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
{EQUIPMENT, WEAR_BODY, 1, 9004, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_HEAD, 1, 12629, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_FOOTS, 1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_WRIST, 1, 14009, 0,0,0,0, 1,2000,0,0,0,0,0,0},
{EQUIPMENT, WEAR_WEAPON, 1, 7009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_NECK, 1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_EAR, 1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
{INVENTORY, 0, 1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
{INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},
{INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},
},
};
unsigned job = pPacketDB->player.byJob;
RaceToJob(job, &job);
for (int i = 0; i < MAX_INITIAL_ITEM; ++i)
{
if (initialItems[job][i].dwVnum == 0)
continue;
memset(&t, 0, sizeof(TPlayerItem));
t.id = ITEM_MANAGER::instance().GetNewID();
t.owner = r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;
t.window = initialItems[job][i].window;
t.vnum = initialItems[job][i].dwVnum;
t.count = initialItems[job][i].count;
// ?? HEM EQUIPMENT HEM INVENTORY AYNI MANTIK
t.pos = initialItems[job][i].pos;
// SOCKET
t.alSockets[0] = initialItems[job][i].socket0;
t.alSockets[1] = initialItems[job][i].socket1;
t.alSockets[2] = initialItems[job][i].socket2;
t.alSockets[3] = initialItems[job][i].socket3;
// SONRA REAL_TIME override
const TItemTable* proto = ITEM_MANAGER::instance().GetTable(t.vnum);
if (proto)
{
for (int l = 0; l < ITEM_LIMIT_MAX_NUM; ++l)
{
if (proto->aLimits[l].bType == LIMIT_REAL_TIME)
{
// socket3 = expire time (DAHA GUVENL?)
t.alSockets[3] = time(0) + proto->aLimits[l].lValue;
break;
}
}
}
// ATTR (efsunu BOZMADIK)
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;
if ((t.window == INVENTORY && t.pos >= 0 && t.pos < INVENTORY_MAX_NUM) ||
(t.window == EQUIPMENT))
{
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());
}