📄 playerdata.cpp.svn-base
字号:
{
UINT lma_value=0;
lma_value=16+(myquest->thisquest->id-234);
if (QuestVariables[1]<(lma_value+1))
{
QuestVariables[1]=lma_value;
}
}
//TEST
if (myquest->thisquest->id==247&&QuestVariables[1]<31)
{
QuestVariables[1]=30;
}
if (myquest->thisquest->id==248&&QuestVariables[1]<32)
{
QuestVariables[1]=31;
}
//2do: other values
if (myquest->thisquest->id==254&&QuestVariables[1]<40)
{
QuestVariables[1]=40;
}
//2do: other values
if (myquest->thisquest->id==261&&QuestVariables[1]<51)
{
QuestVariables[1]=50;
}
if (myquest->thisquest->id==262&&QuestVariables[1]<52)
{
QuestVariables[1]=51;
}
//2Do: other values
if (myquest->thisquest->id==264&&QuestVariables[1]<54)
{
QuestVariables[1]=53;
}
//2do: other values
if (myquest->thisquest->id==266&&QuestVariables[1]<54)
{
QuestVariables[1]=55;
}
//2do: other values
if (myquest->thisquest->id==269&&QuestVariables[1]<59)
{
QuestVariables[1]=58;
}
//2do: other values
if (myquest->thisquest->id==273&&QuestVariables[1]<65)
{
QuestVariables[1]=64;
}
//2do: other values
if (myquest->thisquest->id==274&&QuestVariables[1]<66)
{
QuestVariables[1]=65;
}
//TEST 282 (ok)
/*
if (myquest->thisquest->id==282&&QuestVariables[1]<75)
{
QuestVariables[1]=74;
}
*/
//test on unactive quests.
if( ! myquest->active )
{
//Main quest
if (myquest->thisquest->id==212&&QuestVariables[1]<0x04)
{
QuestVariables[1]=0x03;
}
if (myquest->thisquest->id==213&&QuestVariables[1]<0x05)
{
QuestVariables[1]=0x04;
}
if (myquest->thisquest->id==214&&QuestVariables[1]<0x06)
{
QuestVariables[1]=0x05;
}
if (myquest->thisquest->id>=218&&myquest->thisquest->id<=220&&QuestVariables[1]<0x0A)
{
QuestVariables[1]=0x09;
}
if (myquest->thisquest->id==101&&QuestVariables[1]<0x0B)
{
QuestVariables[1]=0x0A;
}
if (myquest->thisquest->id==104&&QuestVariables[1]<0x0C)
{
QuestVariables[1]=0x0B;
}
if (myquest->thisquest->id==107&&QuestVariables[1]<0x0D)
{
QuestVariables[1]=0x0C;
}
if (myquest->thisquest->id==223&&QuestVariables[1]<0x0E)
{
QuestVariables[1]=0x0D;
}
if (myquest->thisquest->id==231&&QuestVariables[1]<0x0F)
{
QuestVariables[1]=0x0E;
}
if (myquest->thisquest->id==233&&QuestVariables[1]<0x10)
{
QuestVariables[1]=0x0F;
}
if (myquest->thisquest->id==234&&QuestVariables[1]<0x11)
{
QuestVariables[1]=0x10;
}
//second level job (Soldier/muse/hawker/dealer)
if (myquest->thisquest->id==1061||myquest->thisquest->id==1067||myquest->thisquest->id==1073||myquest->thisquest->id==1079)
{
QuestVariables[6]=0x02;
}
if (myquest->thisquest->id==2092)
{
QuestVariables[11]=0x05;
}
if (myquest->thisquest->id==2077)
{
QuestVariables[10]=0x05;
}
//LMA: Patch for lvl 30 class quests.
if (myquest->thisquest->id==857|myquest->thisquest->id==907||myquest->thisquest->id==956||myquest->thisquest->id==1006||myquest->thisquest->id==1007)
{
if (QuestVariables[5]<0x04)
{
QuestVariables[5]=0x03;
}
}
//lvl 30 quest are done.
if (myquest->thisquest->id==912)
{
if (QuestVariables[5]<0x07)
{
QuestVariables[5]=0x06;
}
}
if (myquest->thisquest->id==9997||myquest->thisquest->id==858)
{
QuestVariables[5]=0x07;
}
if (myquest->thisquest->id==1008)
{
QuestVariables[5]=0x07;
}
//For Hawkers
if (((myquest->thisquest->id==957||myquest->thisquest->id==958)&&myquest->items[4]==1)||myquest->thisquest->id==959)
{
QuestVariables[5]=0x07;
}
//Patch to end Spero Quest.
if (myquest->thisquest->id==2011)
{
QuestVariables[8]=0x07;
}
//Log(MSG_INFO, "BLAAAAAAAAA!"); test non-sense
switch (myquest->thisquest->id)
{
case 814: Log(MSG_INFO, "Player: %s can use flying vessel", CharInfo->charname); canUseFlyingVessel = true; break;
case 9999: Log(MSG_INFO, "Player: %s can speak Luna lang", CharInfo->charname); speaksLuna = true; break;
}
}
MyQuest.push_back( myquest );
}
GServer->DB->QFree( );
Session->isLoggedIn = true;
GServer->DB->QExecute("UPDATE accounts SET online=true where id=%u", Session->userid );
// Calculate how many fairies are available online, according to amoutn of players
int oldFairyMax = GServer->Config.FairyMax;
GServer->Config.FairyMax = (int)ceil((float)GServer->ClientList.size() / 50.0); //(1 fairy more every 50 player)
if( oldFairyMax < GServer->Config.FairyMax ){
CFairy* thisfairy = new (nothrow) CFairy;
thisfairy->LastTime = clock();
thisfairy->assigned = 0;
thisfairy->ListIndex = 0;
thisfairy->WaitTime = GServer->Config.FairyWait;
GServer->FairyList.push_back( thisfairy );
}
return true;
}
// This is a REALLY bad way of saving the character data, but it works ^^
void CPlayer::savedata( )
{
lastSaveTime = clock();
if(Session->userid!=0)
{
CMap* map = GServer->MapList.Index[Position->Map];
CRespawnPoint* thisrespawn = map->GetNearRespawn( this );
if(thisrespawn == NULL)
Position->respawn = 4;
else
Position->respawn = thisrespawn->id;
char quick[1024];
char basic[1024];
char sclass[1024];
char slevel[1024];
for(UINT i=0;i<MAX_SKILL;i++)
{
if(i==0)
{
sprintf(&sclass[i], "%i",cskills[i].id);
sprintf(&slevel[i], "%i",cskills[i].level);
}
else
{
sprintf(&sclass[strlen(sclass)], ",%i",cskills[i].id);
sprintf(&slevel[strlen(slevel)], ",%i",cskills[i].level);
}
}
for(UINT i=0;i<42;i++)
{
if(i==0)
sprintf(&basic[i], "%i",bskills[i]);
else
sprintf(&basic[strlen(basic)], ",%i",bskills[i]);
}
for(UINT i=0;i<48;i++)
{
if(i==0)
sprintf(&quick[i], "%i",quickbar[i]);
else
sprintf(&quick[strlen(quick)], ",%i",quickbar[i]);
}
long int hp = Stats->HP;
if(hp<=0)
hp=Stats->MaxHP * 10 / 100;
if(Stats->MP<0)
Stats->MP=0;
GServer->DB->QExecute("UPDATE characters SET classid=%i,level=%i,zuly=%i,curHp=%i,curMp=%i,str=%i,con=%i,dex=%i,_int=%i,cha=%i,sen=%i,exp=%i,skillp=%i,statp=%i, stamina=%i,quickbar='%s',class_skills='%s',class_skills_level='%s',basic_skills='%s',respawnid=%i,clanid=%i,clan_rank=%i WHERE id=%i",
CharInfo->Job,Stats->Level, CharInfo->Zulies, hp, Stats->MP,
Attr->Str,Attr->Con,Attr->Dex,Attr->Int,Attr->Cha,Attr->Sen,
CharInfo->Exp,CharInfo->SkillPoints,CharInfo->StatPoints,CharInfo->stamina,
quick, sclass,slevel,basic,Position->respawn,Clan->clanid,Clan->clanrank,CharInfo->charid );
if(!GServer->DB->QExecute("DELETE FROM items WHERE owner=%i", CharInfo->charid)) return;
for(UINT i=0;i<MAX_INVENTORY;i++)
{
if (items[i].count > 0)
{
GServer->DB->QExecute("INSERT INTO items (owner,itemnum,itemtype,refine,durability,lifespan,slotnum,count,stats,socketed,appraised,gem) VALUES(%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i)",
CharInfo->charid, items[i].itemnum, items[i].itemtype,items[i].refine, items[i].durability,
items[i].lifespan, i, items[i].count, items[i].stats, (items[i].socketed?1:0),
(items[i].appraised?1:0),items[i].gem );
}
}
if(!GServer->DB->QExecute("DELETE FROM storage WHERE owner=%i", Session->userid)) return;
for(UINT i=0;i<160;i++)
{
if (storageitems[i].count > 0)
{
GServer->DB->QExecute("INSERT INTO storage (owner,itemnum,itemtype,refine,durability,lifespan,slotnum,count,stats,socketed,appraised,gem) VALUES(%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i)",
Session->userid, storageitems[i].itemnum, storageitems[i].itemtype,storageitems[i].refine, storageitems[i].durability,
storageitems[i].lifespan, i, storageitems[i].count, storageitems[i].stats, (storageitems[i].socketed?1:0),
(storageitems[i].appraised?1:0), storageitems[i].gem );//Gem Fix by Irulagain
}
}
if(!GServer->DB->QExecute( "DELETE FROM list_quest WHERE owner=%i",CharInfo->charid )) return;
for(int i=0;i<MyQuest.size();i++)
{
QUESTS* myquest = MyQuest.at( i );
char nqitem[200];
for( int j=0;j<5;j++ )
{
if( j==0 )
{
sprintf(&nqitem[j], "%i",myquest->items[j]);
}
else
{
sprintf(&nqitem[strlen(nqitem)], "|%i",myquest->items[j]);
}
}
GServer->DB->QExecute("INSERT INTO list_quest (owner,questid,nitems,active) VALUES (%i,%i,'%s',%i)",
CharInfo->charid, myquest->thisquest->id, nqitem, myquest->active );
}
GServer->DB->QExecute("update accounts set zulystorage = %i where id = %i", CharInfo->Storage_Zulies, Session->userid);
Log(MSG_INFO, "Data Saved for char '%s' ", CharInfo->charname );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -