Does anyone know why the value of the days is not being changed? Because each day should have a different value based on the day's calculation.
PHP Code:
public iSelect_Periodo(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED;
new iCash = GetUserCash(id);
new iNameItem[32];
ArrayGetString(iArrayItemName, iNextShopItem[id], iNameItem, sizeof(iNameItem));
new iCostItem = GetArrayInfo(iNextShopItem[id], INFO_COST);
//new iMoedaItem = GetArrayInfo(iNextShopItem[id], INFO_MOEDA);
new szTitle[228];
formatex(szTitle, charsmax(szTitle), "\d%s Quantos dias você quer? ^n\r» \yCash:\d %i^n^n\w Item Selecionado:\y %s", PREFIXMENU, iCash, iNameItem);
new iMenu = menu_create(szTitle, "_iSelect_Periodo");
new iCalCashPercent = CalculaCash(iCostItem, get_pcvar_num( cvar_cash_divide));
new iCheckCost[4][128], iCheckCost2[4][128];
new iDuration[4] = {1, 7, 30, 90};
for (new i = 0; i < 4; i++) {
iCheckCost[i][0] = GetUserCash(id) < CalculaDia(iCalCashPercent, iDuration[i]) ? 'd' : 'w';
iCheckCost2[i][0] = GetUserCash(id) < CalculaDia(iCalCashPercent, iDuration[i]) ? 'd' : 'r';
formatex(szTitle, charsmax(szTitle), "\%c %i Dias\%c [ Cash: %i ]", iCheckCost[i][0], iDuration[i], iCheckCost2[i][0], iCostItem);
menu_additem(iMenu, szTitle, fmt("%d", i+1), 0);
}
menu_setprop(iMenu, MPROP_EXITNAME, "\d Cancelar Compra");
menu_display(id, iMenu, 0);
return PLUGIN_HANDLED;
}
public _iSelect_Periodo(id, iMenu, item)
{
if (item == MENU_EXIT) {
iNextShopItem[id] = 0;
iNextShopMoeda[id] = 0;
iNextShopDays[id] = 0;
iNextShopBody[id] = 0;
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
new iKey = item - 1;
new iDuration[4] = {1, 7, 30, 90};
// Check if the selected item is valid
if (iKey < 0 || iKey >= sizeof(iDuration))
{
// Dealing with an invalid selection
iSelect_Periodo(id);
return PLUGIN_HANDLED;
}
// Get information on the selected item
new iNameItem[32];
ArrayGetString(iArrayItemName, iNextShopItem[id], iNameItem, sizeof(iNameItem));
new iCostItem = GetArrayInfo(iNextShopItem[id], INFO_COST);
new iMoedaItem = GetArrayInfo(iNextShopItem[id], INFO_MOEDA);
// Check if the player has enough resources to buy the item
if (iMoedaItem == CASH && GetUserCash(id) < iCostItem * iDuration[iKey])
{
// Dealing with a lack of money
iSelect_Periodo(id);
client_print_color(id, print_team_default, "^x01Você não tem dinheiro suficiente!");
return PLUGIN_HANDLED;
}
// Process the purchase of the item
SetUserCash(id, GetUserCash(id) - iCostItem * iDuration[iKey]);
SetLog(LOG_LOJA, "O PLAYER %s COMPROU %s POR %i DIAS E PAGOU %i CASH!", iNameItem, iDuration[iKey], iCostItem * iDuration[iKey]);
UpdateBancoCash(id);
// Atualizar o inventário do jogador
SetInventoryItem(id, GetArrayInfo(iNextShopItem[id], INFO_ID), GetArrayInfo(iNextShopItem[id], INFO_TIPO), TEMPORARIO, iDuration[iKey]);
//set_task(2.0, "recarregar_inventario", id + TASK_LOAD_INVENTARIO);
client_print_color(id, print_team_default, "^x01Você adquiriu %s %s por %d dia%s, verifique seu inventário!", iTipo_Item[GetArrayInfo(iNextShopItem[id], INFO_TIPO)], iNameItem, iDuration[iKey], iDuration[iKey] == 1 ? "" : "s");
// Limpar as variáveis de compra
iNextShopItem[id] = 0;
iNextShopMoeda[id] = 0;
iNextShopDays[id] = 0;
iNextShopBody[id] = 0;
// Destruir o menu
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
stock CalculaCash(valor, calc){
new iReturn
iReturn = valor / calc;
return iReturn;
}
stock CalculaDia( valor_item, data ){
new iReturn
switch( data ){
case 1: iReturn = valor_item;
case 7: iReturn = valor_item + ( 0,315 * valor_item / 100 );
case 30: iReturn = valor_item + ( 0,595 * valor_item / 100 );
case 90: iReturn = valor_item + ( 0,1120 * valor_item / 100 );
}
return iReturn;
}