void GameShop::RequestStorageItemUse(int aIndex, GAMESHOP_REQ_STORAGEITEMUSE * lpRequest) { #if( GAMESHOP_DEBUG == 1 ) LogAddC(2, "[DEBUG] [%s] [%s] [%s]", __FUNCTION__, &gObj[aIndex].AccountID, &gObj[aIndex].Name); #endif // ---- LPOBJ lpUser = &gObj[aIndex]; // ---- if( !gObjIsConnected(aIndex) || lpUser->Connected != PLAYER_PLAYING ) { return; } // ---- GAMESHOP_ANS_STORAGE_ITEM_USE pAnswer; PHeadSubSetB((LPBYTE)&pAnswer, 0xD2, cStorageItemUse, sizeof(pAnswer)); // ---- GAMESHOP_ITEM_DATA * lpItem = this->GetStorageItem(aIndex, lpRequest->AuthIndex, lpRequest->AuthID); // ---- if( !lpItem || !CheckInventoryEmptySpace(lpUser, lpItem->X, lpItem->Y) ) { pAnswer.Result = true; DataSend(aIndex, (LPBYTE)&pAnswer, pAnswer.h.size); LogAddC(3, "[GameShop] %d", __LINE__); return; } // ---- if( !DeleteItemInStorage(aIndex, lpRequest->AuthIndex, lpRequest->AuthID) ) { LogAddC(3, "[GameShop] %d", __LINE__); return; } // ---- if( g_BuffScript.GetBuffDataFromItemCode(lpItem->ItemID) //-> Buff && !this->IsInventoryBuff(lpItem->ItemID) ) { g_CashItemPeriodSystem.SearchAndDeleteItemPeriodEffect(lpUser, lpItem->ItemID); //fix g_CashItemPeriodSystem.GDReqPeriodItemInsert(lpUser, lpItem->ItemID, lpItem->Duration); } else if( lpItem->Duration > 0 ) //-> Period item { ItemSerialCreateSend(aIndex, 236, 0, 0, lpItem->ItemID, lpItem->Level, lpItem->Durability, lpItem->Skill, lpItem->Luck, lpItem->Option, lpItem->Duration * 60, lpItem->Excellent, 0); } else //-> Simply item { ItemSerialCreateSend(aIndex, 235, 0, 0, lpItem->ItemID, lpItem->Level, lpItem->Durability, lpItem->Skill, lpItem->Luck, lpItem->Option, aIndex, lpItem->Excellent, 0); } // ---- pAnswer.Result = false; DataSend(aIndex, (LPBYTE)&pAnswer, pAnswer.h.size); // ---- this->GDSaveUserInfo(aIndex); }
// ------------------------------------------------------------ void GenSystem::RankingGen(LPOBJ lpObj,int Type) { SYSTEMTIME time; GetLocalTime(&time); // ---- if ( lpObj->GenFamily == 0 ) { BYTE Packet[5] = { 0xC1, 0x05, 0xF8, 0x0A, 0x06 }; // You have not Joined The Gens gSendProto.DataSend (lpObj->m_Index, Packet, Packet[1]); return; } else if ( lpObj->GenFamily != Type ) { BYTE Packet[5] = { 0xC1, 0x05 ,0xF8 ,0x0A ,0x05 }; //You are a member of other Gens gSendProto.DataSend (lpObj->m_Index, Packet, Packet[1]); return; } else if (time.wDay > 10) { BYTE Packet[5] = { 0xC1, 0x05 ,0xF8 ,0x0A ,0x01 }; //Ranking rewards are given of first week of each month gSendProto.DataSend (lpObj->m_Index ,Packet, Packet[1]); return; } else if (lpObj->GenReward == 1) { BYTE Packet[5] = { 0xC1, 0x05 ,0xF8 ,0x0A ,0x04 }; //The reward has already been handed out gSendProto.DataSend (lpObj->m_Index, Packet, Packet[1]); return; } else if (lpObj->GenLevel > 8) { BYTE Packet[5] = { 0xC1, 0x05 ,0xF8 ,0x0A ,0x02 }; //You are not eligible for reward. Try harder later gSendProto.DataSend (lpObj->m_Index, Packet, Packet[1]); return; } else if (CheckInventoryEmptySpace(lpObj,1,1) == 0) { BYTE Packet[5] = { 0xC1, 0x05 ,0xF8 ,0x0A ,0x03 }; //You don't have enought space for the item gSendProto.DataSend (lpObj->m_Index, Packet, Packet[1]); return; } int ItemIndex=14*512+141; BYTE Socket[5]; Socket[0] = 0xFF; Socket[1] = 0xFF; Socket[2] = 0xFF; Socket[3] = 0xFF; Socket[4] = 0xFF; // ---- switch (lpObj->GenLevel) { case 1: case 2: ItemSerialCreateSend(lpObj->m_Index,235,0,0,ItemIndex,0,0,0,0,0,lpObj->m_Index,0,0, Socket); // Winning Jewelry Box break; case 3: case 4: ItemSerialCreateSend(lpObj->m_Index,235,0,0,ItemIndex+1,0,0,0,0,0,lpObj->m_Index,0,0, Socket); // Sophisticated Jewelry Box break; case 5: case 6: ItemSerialCreateSend(lpObj->m_Index,235,0,0,ItemIndex+2,0,0,0,0,0,lpObj->m_Index,0,0, Socket); // Metal Jewelry Box break; case 7: case 8: ItemSerialCreateSend(lpObj->m_Index,235,0,0,ItemIndex+3,0,0,0,0,0,lpObj->m_Index,0,0, Socket); // Old Jewelry Box break; } // ---- lpObj->GenReward = 1; BYTE Packet[5] = { 0xC1, 0x05 ,0xF8 ,0x0A ,0x00 }; //Congratulations You has been rewarded gSendProto.DataSend (lpObj->m_Index, Packet, Packet[1]); return; }
void GameShop::RequestStorageItemUse(int aIndex, GAMESHOP_REQ_STORAGEITEMUSE * lpRequest) { #if( GAMESHOP_DEBUG == 1 ) LogAddC(2, "[DEBUG] [%s] [%s] [%s]", __FUNCTION__, &gObj[aIndex].AccountID, &gObj[aIndex].Name); #endif // ---- LPOBJ lpUser = &gObj[aIndex]; // ---- if( !gObjIsConnected(aIndex) || lpUser->Connected != PLAYER_PLAYING ) { return; } // ---- GAMESHOP_ITEM_DATA * lpItem = this->GetStorageItem(aIndex, lpRequest->AuthIndex, lpRequest->AuthID); if(lpItem->ItemID == g_Buyvip1ItemCode) { if(lpUser->Vip != 1 && lpUser->Vip != 0) { GCServerMsgStringSend("You already vip! You can't buy other vip type now.",lpUser->m_Index, 1); return; } } else if (lpItem->ItemID == g_Buyvip2ItemCode) { if(lpUser->Vip != 2 && lpUser->Vip != 0) { GCServerMsgStringSend("You already vip! You can't buy other vip type now.",lpUser->m_Index, 1); return; } } else if (lpItem->ItemID == g_Buyvip3ItemCode) { if(lpUser->Vip != 3 && lpUser->Vip != 0) { GCServerMsgStringSend("You already vip! You can't buy other vip type now.",lpUser->m_Index, 1); return; } } else if (lpItem->ItemID == g_Buyvip4ItemCode) { if(lpUser->Vip != 4 && lpUser->Vip != 0) { GCServerMsgStringSend("You already vip! You can't buy other vip type now.",lpUser->m_Index, 1); return; } } else if (lpItem->ItemID == g_Buyvip5ItemCode) { if(lpUser->Vip != 5 && lpUser->Vip != 0) { GCServerMsgStringSend("You already vip! You can't buy other vip type now.",lpUser->m_Index, 1); return; } } else if (lpItem->ItemID == g_Buyvip6ItemCode) { if(lpUser->Vip != 6 && lpUser->Vip != 0) { GCServerMsgStringSend("You already vip! You can't buy other vip type now.",lpUser->m_Index, 1); return; } } // ---- GAMESHOP_ANS_STORAGE_ITEM_USE pAnswer; PHeadSubSetB((LPBYTE)&pAnswer, 0xD2, cStorageItemUse, sizeof(pAnswer)); // ---- if( !lpItem || !CheckInventoryEmptySpace(lpUser, lpItem->X, lpItem->Y) ) { pAnswer.Result = true; DataSend(aIndex, (LPBYTE)&pAnswer, pAnswer.h.size); LogAddC(3, "[GameShop] %d", __LINE__); return; } // ---- if( !DeleteItemInStorage(aIndex, lpRequest->AuthIndex, lpRequest->AuthID) ) { LogAddC(3, "[GameShop] %d", __LINE__); return; } // ---- //GOLD CHANNEL VIP SYSTEM /*char ms[200]; wsprintf(ms, "%d / %d", lpItem->ItemID, g_Buyvip1ItemCode); GCServerMsgStringSend(ms, lpUser->m_Index, 1);*/ if(lpItem->ItemID == g_Buyvip1ItemCode || lpItem->ItemID == g_Buyvip2ItemCode || lpItem->ItemID == g_Buyvip3ItemCode || lpItem->ItemID == g_Buyvip4ItemCode || lpItem->ItemID == g_Buyvip5ItemCode || lpItem->ItemID == g_Buyvip6ItemCode) { UPDATEGOLDCHANNELSTATUS pReq; if(lpItem->ItemID == g_Buyvip1ItemCode) { pReq.vipType = 1; } else if (lpItem->ItemID == g_Buyvip2ItemCode) { pReq.vipType = 2; } else if (lpItem->ItemID == g_Buyvip3ItemCode) { pReq.vipType = 3; } else if (lpItem->ItemID == g_Buyvip4ItemCode) { pReq.vipType = 4; } else if (lpItem->ItemID == g_Buyvip5ItemCode) { pReq.vipType = 5; } else if (lpItem->ItemID == g_Buyvip6ItemCode) { pReq.vipType = 6; } //Gold Channel Ticket ConMember.InsertUser(lpUser->AccountID); pReq.h.set((LPBYTE)&pReq, 0xD7, 0x01, sizeof(UPDATEGOLDCHANNELSTATUS)); memcpy(pReq.AccountID, lpUser->AccountID, 10); pReq.Duration = lpItem->Duration; cDBSMng.Send((char*)&pReq, sizeof(pReq)); } else if( g_BuffScript.GetBuffDataFromItemCode(lpItem->ItemID) //-> Buff && !this->IsInventoryBuff(lpItem->ItemID) ) { g_CashItemPeriodSystem.SearchAndDeleteItemPeriodEffect(lpUser, lpItem->ItemID); //fix g_CashItemPeriodSystem.GDReqPeriodItemInsert(lpUser, lpItem->ItemID, lpItem->Duration); } else if( lpItem->Duration > 0 ) //-> Period item { ItemSerialCreateSend(aIndex, 236, 0, 0, lpItem->ItemID, lpItem->Level, lpItem->Durability, lpItem->Skill, lpItem->Luck, lpItem->Option, lpItem->Duration * 60, lpItem->Excellent, 0); } else if(lpItem->ItemID == ITEMGET(14,91)) { GDSummonerStateUpdate(lpUser, lpUser->m_Index); } else if(lpItem->ItemID == ITEMGET(14, 169)) { GDRageFighterStateUpdate(lpUser, lpUser->m_Index); } else { ItemSerialCreateSend(aIndex, 235, 0, 0, lpItem->ItemID, lpItem->Level, lpItem->Durability, lpItem->Skill, lpItem->Luck, lpItem->Option, aIndex, lpItem->Excellent, 0); } // ---- pAnswer.Result = false; DataSend(aIndex, (LPBYTE)&pAnswer, pAnswer.h.size); // ---- this->GDSaveUserInfo(aIndex); }