Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void PVP::UpdateBPDPEXP(rsPLAYINFO *PlayerKill, rsPLAYINFO *PlayerKilled, rsPLAYINFO *rsPlayInfoAll)
- {
- #ifdef _W_SERVER
- PVPInfo PlayerKillInf;
- PVPInfo PlayerKilledInf;
- HPTSQL* sql = HPTSQL::GetInstance();
- if (sql->IsConnected())
- {
- sql->EnterSqlSection();
- // Inicio Pegar Info Player que matou
- char GetInfoPlayerKill[255] = { 0 };
- wsprintf(GetInfoPlayerKill, "SELECT * FROM [EPT].[dbo].[PVP] WHERE [NICK]='%s'", PlayerKill->smCharInfo.szName);
- if (sql->Execute(GetInfoPlayerKill))
- {
- if (sql->Fetch())
- {
- sql->GetDataValue(PVP_BP, &PlayerKillInf.BP);
- sql->GetDataValue(PVP_DP, &PlayerKillInf.DP);
- sql->GetDataValue(PVP_EXP, &PlayerKillInf.EXP);
- }
- else
- {
- char QueryInsetInfo[255] = { 0 };
- wsprintf(QueryInsetInfo, "INSERT INTO [EPT].[dbo].[PVP] ([NICK],[BP],[DP],[EXP]) values('%s',0,0,0)", PlayerKill->smCharInfo.szName);
- sql->Execute(QueryInsetInfo);
- PlayerKillInf.BP = 0;
- PlayerKillInf.DP = 0;
- PlayerKillInf.EXP = 0;
- }
- }
- // FIM pegar info Player que matou
- // Inicio pegar info player que morreu
- char GetInfoPlayerKilledInf[255] = { 0 };
- wsprintf(GetInfoPlayerKilledInf, "SELECT * FROM [EPT].[dbo].[PVP] WHERE [NICK]='%s'", PlayerKilled->smCharInfo.szName);
- if (sql->Execute(GetInfoPlayerKilledInf))
- {
- if (sql->Fetch())
- {
- sql->GetDataValue(PVP_BP, &PlayerKilledInf.BP);
- sql->GetDataValue(PVP_DP, &PlayerKilledInf.DP);
- sql->GetDataValue(PVP_EXP, &PlayerKilledInf.EXP);
- }
- else
- {
- char QueryInsetInfo[255] = { 0 };
- wsprintf(QueryInsetInfo, "INSERT INTO [EPT].[dbo].[PVP] ([NICK],[BP],[DP],[EXP]) values('%s',0,0,0)", PlayerKilled->smCharInfo.szName);
- sql->Execute(QueryInsetInfo);
- PlayerKilledInf.BP = 0;
- PlayerKilledInf.DP = 0;
- PlayerKilledInf.EXP = 0;
- }
- }
- // fim pegar info player que morreu
- sql->LeaveSqlSection();
- }
- if (strcmp(PlayerKill->lpsmSock->szIPAddr, PlayerKilled->lpsmSock->szIPAddr) == 0)
- return;
- int DiferenceLevel = PlayerKilled->smCharInfo.Level - PlayerKill->smCharInfo.Level;
- int EXP = 0;
- bool PositiveAddExp = FALSE;
- if (DiferenceLevel >= 30)
- {
- return;
- }
- else if (DiferenceLevel >= 25)
- {
- EXP = 95;
- PositiveAddExp = FALSE;
- }
- else if (DiferenceLevel >= 20)
- {
- EXP = 85;
- PositiveAddExp = FALSE;
- }
- else if (DiferenceLevel >= 15)
- {
- EXP = 75;
- PositiveAddExp = FALSE;
- }
- else if (DiferenceLevel >= 10)
- {
- EXP = 65;
- PositiveAddExp = FALSE;
- }
- else if (DiferenceLevel >= 5)
- {
- EXP = 55;
- PositiveAddExp = FALSE;
- }
- else if (DiferenceLevel > -5)
- {
- EXP = 45;
- PositiveAddExp = FALSE;
- }
- else if (DiferenceLevel > -10)
- {
- EXP = 40;
- PositiveAddExp = TRUE;
- }
- else if (DiferenceLevel > -15)
- {
- EXP = 35;
- PositiveAddExp = TRUE;
- }
- else if (DiferenceLevel > -20)
- {
- EXP = 25;
- PositiveAddExp = TRUE;
- }
- else if (DiferenceLevel > -25)
- {
- EXP = 5;
- PositiveAddExp = TRUE;
- }
- else
- {
- EXP = 1;
- PositiveAddExp = TRUE;
- }
- // PVPInfo PlayerKillInf;
- // PVPInfo PlayerKilledInf;
- // (rsPLAYINFO *PlayerKill, rsPLAYINFO *PlayerKilled)
- EXP = CalcExp(EXP,PlayerKillInf.EXP >= 0,PlayerKillInf.EXP >= PlayerKillInf.EXP,PositiveAddExp);
- int EXPREI;
- int DownEXP = 0;
- if (sql->IsConnected())
- {
- sql->EnterSqlSection();
- char UpdateInfKill[255] = { 0 };
- wsprintf(UpdateInfKill, "UPDATE [EPT].[dbo].[PVP] SET BP=BP+1,EXP=EXP+%d WHERE [NICK]='%s'", EXP, PlayerKill->smCharInfo.szName);
- sql->Execute(UpdateInfKill);
- char UpdateInfKilled[255] = { 0 };
- if (PlayerKilledInf.EXP - EXP < 0)
- DownEXP = 0;
- else
- DownEXP = PlayerKilledInf.EXP - EXP;
- wsprintf(UpdateInfKilled, "UPDATE [EPT].[dbo].[PVP] SET DP=DP+1,EXP=%d WHERE [NICK]='%s'", DownEXP, PlayerKilled->smCharInfo.szName);
- sql->Execute(UpdateInfKilled);
- char GetReiPVP[255];
- wsprintf(GetReiPVP, "SELECT TOP 1 * FROM [EPT].[dbo].[PVP] ORDER BY EXP DESC");
- if (sql->Execute(GetReiPVP))
- {
- if (sql->Fetch())
- {
- sql->GetDataValue(PVP_EXP, &EXPREI);
- }
- }
- sql->LeaveSqlSection();
- }
- // TOTAL
- PlayerKillInf.BP += 1;
- PlayerKillInf.EXP += EXP;
- smTRANS_PVPINFO smTransPVPINFO;
- ZeroMemory(&smTransPVPINFO, sizeof(smTRANS_PVPINFO));
- smTransPVPINFO.size = sizeof(smTRANS_PVPINFO);
- smTransPVPINFO.code = smTRANSCODE_SENDPVPINFO;
- smTransPVPINFO.PVPINFO = PlayerKillInf;
- if (PlayerKill->lpsmSock)
- PlayerKill->lpsmSock->Send2((char *)&smTransPVPINFO, smTransPVPINFO.size, TRUE);
- PlayerKilledInf.DP += 1;
- PlayerKilledInf.EXP = DownEXP;
- ZeroMemory(&smTransPVPINFO, sizeof(smTRANS_PVPINFO));
- smTransPVPINFO.size = sizeof(smTRANS_PVPINFO);
- smTransPVPINFO.code = smTRANSCODE_SENDPVPINFO;
- smTransPVPINFO.PVPINFO = PlayerKilledInf;
- if (PlayerKilled->lpsmSock)
- PlayerKilled->lpsmSock->Send2((char *)&smTransPVPINFO, smTransPVPINFO.size, TRUE);
- if (PlayerKillInf.EXP > EXPREI)
- {
- char MSG[255] = { 0 };
- wsprintf(MSG, "%s e o novo Rei do PVP", PlayerKill->smCharInfo.szName);
- rsSendMessageAll(MSG, 3);
- smTRANS_CHAR_COMMAND smTransCharCommand;
- smTransCharCommand.size = sizeof(smTRANS_CHAR_COMMAND);
- smTransCharCommand.code = smTRANSCODE_REIPVP;
- wsprintf(smTransCharCommand.szName, "%s", PlayerKill->smCharInfo.szName);
- for (int cnt = 0; cnt < CONNECTMAX; cnt++)
- {
- if (rsPlayInfoAll[cnt].lpsmSock)
- rsPlayInfoAll[cnt].lpsmSock->Send((char *)&smTransCharCommand, smTransCharCommand.size, TRUE);
- }
- }
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement