here my edited part of player.cpp, i don't think i did something wront but :\
Code:
Player::~Player(){
if(isconnect){
Maps::removePlayer(this);
Players::deletePlayer(this);
save();
Skills::stopTimerPlayer(this);
isconnect= false;
}
}
void Player::save() {
char sql[2000];
sprintf_s(sql, 2000, "update keymap set ");
for(int i=0; i<90; i++){
char temp[100];
if(i!=89)
sprintf_s(temp, 100, "pos%d=%d, ", i, keys[i]);
else
sprintf_s(temp, 100, "pos%d=%d where charid=%d; ", i, keys[i], getPlayerid());
strcat_s(sql, 2000, temp);
}
MySQL::insert(sql);
sprintf_s(sql, 2000, "update characters set level=%d, job=%d, str=%d, dex=%d, intt=%d, luk=%d, chp=%d, mhp=%d, cmp=%d, mmp=%d, ap=%d, sp=%d, exp=%d, fame=%d, map=%d, gender=%d, skin=%d, eyes=%d, hair=%d, mesos=%d where id=%d", getLevel(), getJob(), getStr(), getDex(), getInt(), getLuk(), getHP(), getMHP(), getMP(), getMMP(), getAp(), getSp(), getExp(), getFame(), getMap(), getGender(), getSkin(), getEyes(), getHair(), inv->getMesos() ,getPlayerid());
MySQL::insert(sql);
char temp[100];
sprintf_s(temp, 100, "where charid=%d;", getPlayerid());
strcat_s(sql, 2000, temp);
MySQL::insert(sql);
sprintf_s(sql, 2000, "delete from equip where charid=%d;", getPlayerid());
MySQL::insert(sql);
for(int i=0; i<inv->getEquipNum(); i++){
sprintf_s(sql, 2000, "insert into equip values(%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);", inv->getEquip(i)->id, Drops::equips[inv->getEquip(i)->id].type ,getPlayerid(), inv->getEquipPos(i), inv->getEquip(i)->slots, inv->getEquip(i)->scrolls,
inv->getEquip(i)->istr, inv->getEquip(i)->idex, inv->getEquip(i)->iint, inv->getEquip(i)->iluk, inv->getEquip(i)->ihp, inv->getEquip(i)->imp, inv->getEquip(i)->iwatk, inv->getEquip(i)->imatk, inv->getEquip(i)->iwdef,
inv->getEquip(i)->imdef, inv->getEquip(i)->iacc, inv->getEquip(i)->iavo, inv->getEquip(i)->ihand, inv->getEquip(i)->ijump, inv->getEquip(i)->ispeed);
MySQL::insert(sql);
}
sprintf_s(sql, 2000, "delete from skills where charid=%d;", getPlayerid());
MySQL::insert(sql);
for(int i=0; i<skills->getSkillsNum(); i++){
sprintf_s(sql, 2000, "insert into skills values(%d, %d, %d)", getPlayerid(), skills->getSkillID(i), skills->getSkillLevel(skills->getSkillID(i)));
MySQL::insert(sql);
}
sprintf_s(sql, 2000, "delete from items where charid=%d;", getPlayerid());
MySQL::insert(sql);
for(int i=0; i<inv->getItemNum(); i++){
sprintf_s(sql, 2000, "insert into items values(%d, %d, %d, %d, %d);", inv->getItem(i)->id, getPlayerid() ,inv->getItem(i)->inv, inv->getItem(i)->pos, inv->getItem(i)->amount);
MySQL::insert(sql);
}
}