- Katılım
- 4 Ocak 2016
- Konular
- 191
- Mesajlar
- 901
- Çözüm
- 7
- Online süresi
- 1mo 29d
- Reaksiyon Skoru
- 891
- Altın Konu
- 73
- Başarım Puanı
- 214
- MmoLira
- 7,081
- DevLira
- 18
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
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>
[CODE title="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].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].window;
t.vnum = initialItems[job].dwVnum;
t.count = initialItems[job].count;
// ?? HEM EQUIPMENT HEM INVENTORY AYNI MANTIK
t.pos = initialItems[job].pos;
// SOCKET
t.alSockets[0] = initialItems[job].socket0;
t.alSockets[1] = initialItems[job].socket1;
t.alSockets[2] = initialItems[job].socket2;
t.alSockets[3] = initialItems[job].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].attr_type0;
t.aAttr[0].sValue = initialItems[job].attr_value0;
t.aAttr[1].bType = initialItems[job].attr_type1;
t.aAttr[1].sValue = initialItems[job].attr_value1;
t.aAttr[2].bType = initialItems[job].attr_type2;
t.aAttr[2].sValue = initialItems[job].attr_value2;
t.aAttr[3].bType = initialItems[job].attr_type3;
t.aAttr[3].sValue = initialItems[job].attr_value3;
t.aAttr[4].bType = initialItems[job].attr_type4;
t.aAttr[4].sValue = initialItems[job].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());
}
[/CODE]
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>
[CODE title="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].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].window;
t.vnum = initialItems[job].dwVnum;
t.count = initialItems[job].count;
// ?? HEM EQUIPMENT HEM INVENTORY AYNI MANTIK
t.pos = initialItems[job].pos;
// SOCKET
t.alSockets[0] = initialItems[job].socket0;
t.alSockets[1] = initialItems[job].socket1;
t.alSockets[2] = initialItems[job].socket2;
t.alSockets[3] = initialItems[job].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].attr_type0;
t.aAttr[0].sValue = initialItems[job].attr_value0;
t.aAttr[1].bType = initialItems[job].attr_type1;
t.aAttr[1].sValue = initialItems[job].attr_value1;
t.aAttr[2].bType = initialItems[job].attr_type2;
t.aAttr[2].sValue = initialItems[job].attr_value2;
t.aAttr[3].bType = initialItems[job].attr_type3;
t.aAttr[3].sValue = initialItems[job].attr_value3;
t.aAttr[4].bType = initialItems[job].attr_type4;
t.aAttr[4].sValue = initialItems[job].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());
}
[/CODE]
En Çok Reaksiyon Alan Mesajlar
sorun çözüldü . başlangıçta verilen süreli itemlerde süre bilgisi socket’e yazılmadığı için itemin envantere girer girmez süresinin bitmiş sayılıp silinmesiydi; çözüm olarak başlangıç item tablosuna duration alanı eklenip, bu değer varsa time(0) + duration hesaplanarak itemin expire zamanı socket’e yazıldı, böylece süreli itemler düzgün şekilde envantere gelmeye başladı
[CODE title="güncel hali"] 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;
DWORD duration;
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,0, 1,2000, 0,0, 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, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
{INVENTORY, 8, 1, 72702, 60*60*24*7, 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,0, 1,2000, 0,0, 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, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
{INVENTORY, 8, 1, 72702, 60*60*24*7, 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,0, 1,2000, 0,0, 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, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
{INVENTORY, 8, 1, 72702, 60*60*24*7, 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,0, 1,2000, 0,0, 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, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
{INVENTORY, 8, 1, 72702, 60*60*24*7, 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].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].window;
t.vnum = initialItems[job].dwVnum;
t.count = initialItems[job].count;
// ?? HEM EQUIPMENT HEM INVENTORY AYNI MANTIK
t.pos = initialItems[job].pos;
// SOCKET
t.alSockets[0] = initialItems[job].socket0;
t.alSockets[1] = initialItems[job].socket1;
t.alSockets[2] = initialItems[job].socket2;
t.alSockets[3] = initialItems[job].socket3;
if (initialItems[job].duration > 0)
{
// Güvenli expire socket
t.alSockets[0] = time(0) + initialItems[job].duration;
}
// ATTR (efsunu BOZMADIK)
t.aAttr[0].bType = initialItems[job].attr_type0;
t.aAttr[0].sValue = initialItems[job].attr_value0;
t.aAttr[1].bType = initialItems[job].attr_type1;
t.aAttr[1].sValue = initialItems[job].attr_value1;
t.aAttr[2].bType = initialItems[job].attr_type2;
t.aAttr[2].sValue = initialItems[job].attr_value2;
t.aAttr[3].bType = initialItems[job].attr_type3;
t.aAttr[3].sValue = initialItems[job].attr_value3;
t.aAttr[4].bType = initialItems[job].attr_type4;
t.aAttr[4].sValue = initialItems[job].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());
}[/CODE]
Öğeyi görmek için üye olmalısınız.









