legacy VIP system implement
This commit is contained in:
parent
b80202334f
commit
050ba05cf2
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Irresistible Gaming (c) 2018
|
* Irresistible Gaming (c) 2018
|
||||||
* Developed by Lorenc Pekaj
|
* Developed by Lorenc Pekaj
|
||||||
* Module:
|
* Module: cnr\features\houses\furniture.pwn
|
||||||
* Purpose:
|
* Purpose: furniture module for homes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* ** Includes ** */
|
/* ** Includes ** */
|
||||||
@ -463,7 +463,11 @@ hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
if ( !IsPlayerHomeOwner( playerid, houseid ) )
|
if ( !IsPlayerHomeOwner( playerid, houseid ) )
|
||||||
return SendError( playerid, "You are not the owner of this house." );
|
return SendError( playerid, "You are not the owner of this house." );
|
||||||
|
|
||||||
new vip_slots = 20 + ( p_VIPLevel[ playerid ] * 10 );
|
new vip_slots = 25 + ( GetPlayerVIPLevel( playerid ) * 5 );
|
||||||
|
|
||||||
|
if ( vip_slots > MAX_FURNITURE )
|
||||||
|
vip_slots = MAX_FURNITURE; // just to be sure
|
||||||
|
|
||||||
new total_furniture = Iter_Count( housefurniture[ houseid ] );
|
new total_furniture = Iter_Count( housefurniture[ houseid ] );
|
||||||
|
|
||||||
if ( total_furniture > vip_slots )
|
if ( total_furniture > vip_slots )
|
||||||
|
@ -126,7 +126,7 @@ CMD:estate( playerid, params[ ] )
|
|||||||
else if ( ! IsPlayerHomeOwner( playerid, houseid ) ) return SendError( playerid, "You are not the owner of this home." );
|
else if ( ! IsPlayerHomeOwner( playerid, houseid ) ) return SendError( playerid, "You are not the owner of this home." );
|
||||||
else if ( coins < 25.0 ) return SendError( playerid, "Please specify an ask price greater than 25.00 IC." );
|
else if ( coins < 25.0 ) return SendError( playerid, "Please specify an ask price greater than 25.00 IC." );
|
||||||
else if ( coins > 25000.0 ) return SendError( playerid, "Please specify an ask price less than 25,000 IC." );
|
else if ( coins > 25000.0 ) return SendError( playerid, "Please specify an ask price less than 25,000 IC." );
|
||||||
else if ( GetPlayerCash( playerid ) < HOUSE_LISTING_FEE && GetPlayerVIPLevel( playerid ) < VIP_GOLD ) return SendError( playerid, "You need at least %s to create a house listing.", cash_format( HOUSE_LISTING_FEE ) );
|
else if ( GetPlayerCash( playerid ) < HOUSE_LISTING_FEE && GetPlayerVIPLevel( playerid ) < VIP_PLATINUM ) return SendError( playerid, "You need at least %s to create a house listing.", cash_format( HOUSE_LISTING_FEE ) );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mysql_tquery( dbHandle, sprintf( "SELECT * FROM `HOUSE_LISTINGS` WHERE `HOUSE_ID` = %d AND `SALE_DATE` IS NULL", houseid ), "HouseListing_OnCreateListing", "ddf", playerid, houseid, coins );
|
mysql_tquery( dbHandle, sprintf( "SELECT * FROM `HOUSE_LISTINGS` WHERE `HOUSE_ID` = %d AND `SALE_DATE` IS NULL", houseid ), "HouseListing_OnCreateListing", "ddf", playerid, houseid, coins );
|
||||||
@ -135,7 +135,7 @@ CMD:estate( playerid, params[ ] )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SendServerMessage( playerid, "You can list your own home using "COL_GREY"/estate list"COL_WHITE" for %s.", p_VIPLevel[ playerid ] < VIP_GOLD ? ( cash_format( HOUSE_LISTING_FEE ) ) : ( "FREE" ) );
|
SendServerMessage( playerid, "You can list your own home using "COL_GREY"/estate list"COL_WHITE" for %s.", p_VIPLevel[ playerid ] < VIP_PLATINUM ? ( cash_format( HOUSE_LISTING_FEE ) ) : ( "FREE" ) );
|
||||||
return ShowPlayerHomeListings( playerid );
|
return ShowPlayerHomeListings( playerid );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -308,7 +308,7 @@ thread HouseListing_OnCreateListing( playerid, houseid, Float: ask_price )
|
|||||||
if ( ! rows )
|
if ( ! rows )
|
||||||
{
|
{
|
||||||
// debit user account
|
// debit user account
|
||||||
if ( GetPlayerVIPLevel( playerid ) < VIP_GOLD ) {
|
if ( GetPlayerVIPLevel( playerid ) < VIP_PLATINUM ) {
|
||||||
GivePlayerCash( playerid, -HOUSE_LISTING_FEE );
|
GivePlayerCash( playerid, -HOUSE_LISTING_FEE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
/* ** Functions ** */
|
/* ** Functions ** */
|
||||||
stock IsPlayerJob( playerid, jobid ) {
|
stock IsPlayerJob( playerid, jobid ) {
|
||||||
return ( p_Job{ playerid } == jobid ) || ( p_VIPLevel[ playerid ] >= VIP_GOLD && p_VIPJob{ playerid } == jobid );
|
return ( p_Job{ playerid } == jobid ) || ( p_VIPLevel[ playerid ] >= VIP_DIAMOND && p_VIPJob{ playerid } == jobid );
|
||||||
}
|
}
|
||||||
|
|
||||||
stock GetJobIDFromName( szJob[ ] )
|
stock GetJobIDFromName( szJob[ ] )
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#define ICM_PAGE_DEFAULT ( 0 )
|
#define ICM_PAGE_DEFAULT ( 0 )
|
||||||
#define ICM_PAGE_CASHCARD ( 1 )
|
#define ICM_PAGE_CASHCARD ( 1 )
|
||||||
#define ICM_PAGE_ASSETS ( 2 )
|
#define ICM_PAGE_ASSETS ( 2 )
|
||||||
#define ICM_PAGE_UPGRADE ( 3 )
|
//#define ICM_PAGE_UPGRADE ( 3 )
|
||||||
|
|
||||||
#define VIP_REGULAR ( 1 )
|
#define VIP_REGULAR ( 1 )
|
||||||
#define VIP_BRONZE ( 2 )
|
#define VIP_BRONZE ( 2 )
|
||||||
@ -51,8 +51,10 @@ enum E_IC_MARKET_DATA
|
|||||||
new
|
new
|
||||||
g_irresistibleVipItems [ ] [ E_IC_MARKET_DATA ] =
|
g_irresistibleVipItems [ ] [ E_IC_MARKET_DATA ] =
|
||||||
{
|
{
|
||||||
{ VIP_GOLD, "Gold V.I.P", 1800.0 },
|
{ VIP_DIAMOND, "Diamond V.I.P", 10000.0 },
|
||||||
{ VIP_BRONZE, "Bronze V.I.P", 1000.0 },
|
{ VIP_PLATINUM, "Platinum V.I.P", 5000.0 },
|
||||||
|
{ VIP_GOLD, "Gold V.I.P", 2500.0 },
|
||||||
|
{ VIP_BRONZE, "Bronze V.I.P", 1500.0 },
|
||||||
{ VIP_REGULAR, "Regular V.I.P", 500.0 }
|
{ VIP_REGULAR, "Regular V.I.P", 500.0 }
|
||||||
},
|
},
|
||||||
g_irresistibleCashCards [ ] [ E_IC_MARKET_DATA ] =
|
g_irresistibleCashCards [ ] [ E_IC_MARKET_DATA ] =
|
||||||
@ -70,8 +72,8 @@ new
|
|||||||
{ ICM_COKE_BIZ, "Coke Business", 1500.0 },
|
{ ICM_COKE_BIZ, "Coke Business", 1500.0 },
|
||||||
{ ICM_METH_BIZ, "Meth Business", 700.0 },
|
{ ICM_METH_BIZ, "Meth Business", 700.0 },
|
||||||
{ ICM_WEED_BIZ, "Weed Business", 500.0 },
|
{ ICM_WEED_BIZ, "Weed Business", 500.0 },
|
||||||
{ ICM_VEHICLE, "Select Vehicle", 450.0 },
|
{ ICM_VEHICLE, "Select Vehicle", 500.0 },
|
||||||
{ ICM_HOUSE, "Select House", 400.0 },
|
{ ICM_HOUSE, "Select House", 500.0 },
|
||||||
{ ICM_GATE, "Custom Gate", 350.0 },
|
{ ICM_GATE, "Custom Gate", 350.0 },
|
||||||
{ ICM_VEH_SLOT, "Extra Vehicle Slot", 350.0 },
|
{ ICM_VEH_SLOT, "Extra Vehicle Slot", 350.0 },
|
||||||
{ ICM_GARAGE, "Select Garage", 250.0 },
|
{ ICM_GARAGE, "Select Garage", 250.0 },
|
||||||
@ -85,58 +87,25 @@ new
|
|||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
/* ** Forwards ** */
|
|
||||||
forward Float: GetPlayerUpgradeVIPCost( playerid, Float: days_left = 30.0 );
|
|
||||||
|
|
||||||
/* ** Hooks ** */
|
/* ** Hooks ** */
|
||||||
hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
||||||
{
|
{
|
||||||
if ( dialogid == DIALOG_IC_MARKET && response )
|
if ( dialogid == DIALOG_IC_MARKET && response )
|
||||||
{
|
{
|
||||||
new current_vip = GetPlayerVIPLevel( playerid );
|
//new current_vip = GetPlayerVIPLevel( playerid );
|
||||||
new Float: days_left = float( GetPlayerVIPDuration( playerid ) ) / 86400.0;
|
|
||||||
|
|
||||||
if ( listitem == sizeof( g_irresistibleVipItems ) )
|
if ( listitem == sizeof( g_irresistibleVipItems ) ) {
|
||||||
{
|
|
||||||
new
|
|
||||||
Float: upgrade_cost = floatround( GetPlayerUpgradeVIPCost( playerid, days_left ), floatround_ceil );
|
|
||||||
|
|
||||||
if ( current_vip >= VIP_REGULAR && current_vip < VIP_GOLD && days_left >= 7.0 && upgrade_cost )
|
|
||||||
{
|
|
||||||
p_CoinMarketPage{ playerid } = ICM_PAGE_UPGRADE;
|
|
||||||
return ShowPlayerDialog( playerid, DIALOG_YOU_SURE_VIP, DIALOG_STYLE_MSGBOX, ""COL_GOLD"Irresistible Coin -{FFFFFF} Confirmation", sprintf( ""COL_WHITE"Are you sure that you want to spend %s IC?", number_format( upgrade_cost, .decimals = 2 ) ), "Yes", "No" );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SendError( playerid, "Upgrading your V.I.P is currently unavailable." );
|
|
||||||
return ShowPlayerCoinMarketDialog( playerid );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ( listitem == sizeof( g_irresistibleVipItems ) + 1 ) {
|
|
||||||
return ShowPlayerCoinMarketDialog( playerid, ICM_PAGE_CASHCARD );
|
return ShowPlayerCoinMarketDialog( playerid, ICM_PAGE_CASHCARD );
|
||||||
}
|
}
|
||||||
else if ( listitem == sizeof( g_irresistibleVipItems ) + 2 ) {
|
else if ( listitem == sizeof( g_irresistibleVipItems ) + 1 ) {
|
||||||
return ShowPlayerHomeListings( playerid );
|
return ShowPlayerHomeListings( playerid );
|
||||||
}
|
}
|
||||||
else if ( listitem > sizeof( g_irresistibleVipItems ) + 2 ) {
|
else if ( listitem > sizeof( g_irresistibleVipItems ) + 1 ) {
|
||||||
return ShowPlayerCoinMarketDialog( playerid, ICM_PAGE_ASSETS );
|
return ShowPlayerCoinMarketDialog( playerid, ICM_PAGE_ASSETS );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
new Float: iCoinRequirement = g_irresistibleVipItems[ listitem ] [ E_PRICE ] * GetGVarFloat( "vip_discount" );
|
new Float: iCoinRequirement = g_irresistibleVipItems[ listitem ] [ E_PRICE ] * GetGVarFloat( "vip_discount" );
|
||||||
new selected_vip = g_irresistibleVipItems[ listitem ] [ E_ID ];
|
//new selected_vip = g_irresistibleVipItems[ listitem ] [ E_ID ];
|
||||||
|
|
||||||
if ( current_vip > VIP_GOLD ) {
|
|
||||||
current_vip = VIP_GOLD;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( current_vip != 0 && current_vip != selected_vip ) {
|
|
||||||
if ( current_vip > selected_vip ) {
|
|
||||||
SendError( playerid, "You must wait until your V.I.P is expired in order to downgrade it." );
|
|
||||||
} else {
|
|
||||||
SendError( playerid, "You must upgrade your current V.I.P level first." );
|
|
||||||
}
|
|
||||||
return ShowPlayerCoinMarketDialog( playerid );
|
|
||||||
}
|
|
||||||
|
|
||||||
p_CoinMarketPage{ playerid } = ICM_PAGE_DEFAULT;
|
p_CoinMarketPage{ playerid } = ICM_PAGE_DEFAULT;
|
||||||
p_CoinMarketSelectedItem{ playerid } = listitem;
|
p_CoinMarketSelectedItem{ playerid } = listitem;
|
||||||
@ -168,66 +137,17 @@ hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
if ( !response )
|
if ( !response )
|
||||||
return ShowPlayerCoinMarketDialog( playerid, p_CoinMarketPage{ playerid } );
|
return ShowPlayerCoinMarketDialog( playerid, p_CoinMarketPage{ playerid } );
|
||||||
|
|
||||||
new current_vip = GetPlayerVIPLevel( playerid );
|
|
||||||
new Float: player_coins = GetPlayerIrresistibleCoins( playerid );
|
new Float: player_coins = GetPlayerIrresistibleCoins( playerid );
|
||||||
new Float: days_left = float( GetPlayerVIPDuration( playerid ) ) / 86400.0;
|
|
||||||
|
|
||||||
// restore listitem of whatever player selected
|
// restore listitem of whatever player selected
|
||||||
listitem = p_CoinMarketSelectedItem{ playerid };
|
listitem = p_CoinMarketSelectedItem{ playerid };
|
||||||
|
|
||||||
// upgrade player vip
|
|
||||||
if ( p_CoinMarketPage{ playerid } == ICM_PAGE_UPGRADE )
|
|
||||||
{
|
|
||||||
if ( current_vip >= VIP_REGULAR && current_vip < VIP_GOLD && days_left >= 7.0 )
|
|
||||||
{
|
|
||||||
new Float: upgrade_cost = floatround( GetPlayerUpgradeVIPCost( playerid, days_left ), floatround_ceil );
|
|
||||||
new new_vip_item = ( current_vip == VIP_BRONZE ? 0 : 1 );
|
|
||||||
|
|
||||||
if ( player_coins < upgrade_cost ) {
|
|
||||||
SendError( playerid, "You need around %s coins before you can upgrade your V.I.P!", number_format( upgrade_cost - player_coins, .decimals = 2 ) );
|
|
||||||
return ShowPlayerCoinMarketDialog( playerid, p_CoinMarketPage{ playerid } );
|
|
||||||
}
|
|
||||||
|
|
||||||
// if it's zero then the player is not regular/bronze
|
|
||||||
if ( upgrade_cost )
|
|
||||||
{
|
|
||||||
// set level no interval, deduct and notify
|
|
||||||
SetPlayerVipLevel( playerid, g_irresistibleVipItems[ new_vip_item ] [ E_ID ], .interval = 0 );
|
|
||||||
GivePlayerIrresistibleCoins( playerid, -upgrade_cost );
|
|
||||||
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[VIP PACKAGE]"COL_WHITE" You have upgraded to %s for %s Irresistible Coins!", g_irresistibleVipItems[ new_vip_item ] [ E_NAME ], number_format( upgrade_cost, .decimals = 0 ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SendError( playerid, "There seemed to be an error while upgrading your V.I.P, please contact Lorenc." );
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SendError( playerid, "Upgrading your V.I.P is currently unavailable." );
|
|
||||||
return ShowPlayerCoinMarketDialog( playerid );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// default page
|
// default page
|
||||||
else if ( p_CoinMarketPage{ playerid } == ICM_PAGE_DEFAULT )
|
if ( p_CoinMarketPage{ playerid } == ICM_PAGE_DEFAULT )
|
||||||
{
|
{
|
||||||
new Float: iCoinRequirement = g_irresistibleVipItems[ listitem ] [ E_PRICE ] * GetGVarFloat( "vip_discount" );
|
new Float: iCoinRequirement = g_irresistibleVipItems[ listitem ] [ E_PRICE ] * GetGVarFloat( "vip_discount" );
|
||||||
new selected_vip = g_irresistibleVipItems[ listitem ] [ E_ID ];
|
new selected_vip = g_irresistibleVipItems[ listitem ] [ E_ID ];
|
||||||
|
|
||||||
if ( current_vip > VIP_GOLD ) {
|
|
||||||
current_vip = VIP_GOLD;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( current_vip != 0 && current_vip != selected_vip ) {
|
|
||||||
if ( current_vip > selected_vip ) {
|
|
||||||
SendError( playerid, "You must wait until your V.I.P is expired in order to downgrade it." );
|
|
||||||
} else {
|
|
||||||
SendError( playerid, "You must upgrade your current V.I.P level first." );
|
|
||||||
}
|
|
||||||
return ShowPlayerCoinMarketDialog( playerid );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( player_coins < iCoinRequirement ) {
|
if ( player_coins < iCoinRequirement ) {
|
||||||
SendError( playerid, "You need around %s coins before you can get this V.I.P!", number_format( iCoinRequirement - player_coins, .decimals = 2 ) );
|
SendError( playerid, "You need around %s coins before you can get this V.I.P!", number_format( iCoinRequirement - player_coins, .decimals = 2 ) );
|
||||||
return ShowPlayerCoinMarketDialog( playerid, p_CoinMarketPage{ playerid } );
|
return ShowPlayerCoinMarketDialog( playerid, p_CoinMarketPage{ playerid } );
|
||||||
@ -243,7 +163,18 @@ hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[VIP PACKAGE]"COL_WHITE" You have redeemed %s V.I.P for %s Irresistible Coins! Congratulations! :D", VIPToString( selected_vip ), number_format( iCoinRequirement, .decimals = 0 ) );
|
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[VIP PACKAGE]"COL_WHITE" You have redeemed %s V.I.P for %s Irresistible Coins! Congratulations! :D", VIPToString( selected_vip ), number_format( iCoinRequirement, .decimals = 0 ) );
|
||||||
|
|
||||||
// Redirect player
|
// Redirect player
|
||||||
|
if ( selected_vip == VIP_DIAMOND )
|
||||||
|
{
|
||||||
|
ShowPlayerDialog( playerid, DIALOG_DONATED_DIAGOLD, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"As you've redeemed Diamond V.I.P, you have the option of gifting Gold VIP to someone.\n\nIf you would like to gift it to yourself, type your name/id or the person you're gifting it to.\n\n"COL_ORANGE"If you just don't know yet, cancel and PM Lorenc on the forum when you make a decision!", "Gift it!", "I'll Think!" );
|
||||||
|
}
|
||||||
|
else if ( selected_vip == VIP_PLATINUM )
|
||||||
|
{
|
||||||
|
ShowPlayerDialog( playerid, DIALOG_DONATED_PLATBRONZE, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"As you've redeemed Platinum V.I.P, you have the option of gifting Bronze VIP to someone.\n\nIf you would like to gift it to yourself, type your name/id or the person you're gifting it to.\n\n"COL_ORANGE"If you just don't know yet, cancel and PM Lorenc on the forum when you make a decision!", "Gift it!", "I'll Think!" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
ShowPlayerVipRedeemedDialog( playerid );
|
ShowPlayerVipRedeemedDialog( playerid );
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -383,6 +314,68 @@ hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
{
|
{
|
||||||
return ShowPlayerCoinMarketDialog( playerid );
|
return ShowPlayerCoinMarketDialog( playerid );
|
||||||
}
|
}
|
||||||
|
else if ( dialogid == DIALOG_DONATED_PLATBRONZE )
|
||||||
|
{
|
||||||
|
if ( response )
|
||||||
|
{
|
||||||
|
new
|
||||||
|
pID;
|
||||||
|
|
||||||
|
if ( sscanf( inputtext, "u", pID ) )
|
||||||
|
{
|
||||||
|
SendError( playerid, "Please enter a player's ID or name." );
|
||||||
|
ShowPlayerDialog( playerid, DIALOG_DONATED_PLATBRONZE, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"As you've redeemed Platinum V.I.P, you have the option of gifting Bronze VIP to someone.\n\nIf you would like to gift it to yourself, type your name/id or the person you're gifting it to.\n\n"COL_ORANGE"If you just don't know yet, cancel and PM Lorenc on the forum when you make a decision!", "Gift it!", "I'll Think!" );
|
||||||
|
}
|
||||||
|
else if ( !IsPlayerConnected( pID ) )
|
||||||
|
{
|
||||||
|
SendError( playerid, "This player is not connected." );
|
||||||
|
ShowPlayerDialog( playerid, DIALOG_DONATED_PLATBRONZE, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"As you've redeemed Platinum V.I.P, you have the option of gifting Bronze VIP to someone.\n\nIf you would like to gift it to yourself, type your name/id or the person you're gifting it to.\n\n"COL_ORANGE"If you just don't know yet, cancel and PM Lorenc on the forum when you make a decision!", "Gift it!", "I'll Think!" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[V.I.P]"COL_WHITE" You have gifted Bronze V.I.P to %s(%d)!", ReturnPlayerName( pID ), pID );
|
||||||
|
SetPlayerVipLevel( pID, VIP_BRONZE );
|
||||||
|
ShowPlayerVipRedeemedDialog( playerid );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AddPlayerNote( playerid, -1, "{CD7F32}Bronze V.I.P" #COL_WHITE );
|
||||||
|
SendServerMessage( playerid, "This has been noted down for your account and will be given to you at a stage that you want, contact an executive." );
|
||||||
|
ShowPlayerVipRedeemedDialog( playerid );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( dialogid == DIALOG_DONATED_DIAGOLD )
|
||||||
|
{
|
||||||
|
if ( response )
|
||||||
|
{
|
||||||
|
new
|
||||||
|
pID;
|
||||||
|
|
||||||
|
if ( sscanf( inputtext, "u", pID ) )
|
||||||
|
{
|
||||||
|
SendError( playerid, "Please enter a player's ID or name." );
|
||||||
|
ShowPlayerDialog( playerid, DIALOG_DONATED_DIAGOLD, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"As you've redeemed Diamond V.I.P, you have the option of gifting Gold VIP to someone.\n\nIf you would like to gift it to yourself, type your name/id or the person you're gifting it to.\n\n"COL_ORANGE"If you just don't know yet, cancel and PM Lorenc on the forum when you make a decision!", "Gift it!", "I'll Think!" );
|
||||||
|
}
|
||||||
|
else if ( !IsPlayerConnected( pID ) )
|
||||||
|
{
|
||||||
|
SendError( playerid, "This player is not connected." );
|
||||||
|
ShowPlayerDialog( playerid, DIALOG_DONATED_DIAGOLD, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"As you've redeemed Diamond V.I.P, you have the option of gifting Gold VIP to someone.\n\nIf you would like to gift it to yourself, type your name/id or the person you're gifting it to.\n\n"COL_ORANGE"If you just don't know yet, cancel and PM Lorenc on the forum when you make a decision!", "Gift it!", "I'll Think!" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[V.I.P]"COL_WHITE" You have gifted Gold V.I.P to %s(%d)!", ReturnPlayerName( pID ), pID );
|
||||||
|
SetPlayerVipLevel( pID, VIP_GOLD );
|
||||||
|
ShowPlayerVipRedeemedDialog( playerid );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AddPlayerNote( playerid, -1, ""COL_GOLD"Gold V.I.P" #COL_WHITE );
|
||||||
|
SendServerMessage( playerid, "This has been noted down for your account and will be given to you at a stage that you want, contact an executive." );
|
||||||
|
ShowPlayerVipRedeemedDialog( playerid );
|
||||||
|
}
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -437,35 +430,20 @@ stock ShowPlayerCoinMarketDialog( playerid, page = ICM_PAGE_DEFAULT )
|
|||||||
new Float: discount = GetGVarFloat( "vip_discount" );
|
new Float: discount = GetGVarFloat( "vip_discount" );
|
||||||
new szMarket[ 512 ] = ""COL_GREY"Item Name\t"COL_GREY"Coins Needed\n";
|
new szMarket[ 512 ] = ""COL_GREY"Item Name\t"COL_GREY"Coins Needed\n";
|
||||||
|
|
||||||
if ( page == ICM_PAGE_DEFAULT || page == ICM_PAGE_UPGRADE )
|
if ( page == ICM_PAGE_DEFAULT )
|
||||||
{
|
{
|
||||||
new current_vip = GetPlayerVIPLevel( playerid );
|
//new current_vip = GetPlayerVIPLevel( playerid );
|
||||||
new Float: days_left = float( GetPlayerVIPDuration( playerid ) ) / 86400.0;
|
|
||||||
|
|
||||||
if ( current_vip > VIP_GOLD ) {
|
|
||||||
current_vip = VIP_GOLD;
|
|
||||||
}
|
|
||||||
|
|
||||||
for( new i = 0; i < sizeof( g_irresistibleVipItems ); i++ )
|
for( new i = 0; i < sizeof( g_irresistibleVipItems ); i++ )
|
||||||
{
|
{
|
||||||
new Float: iCoinRequirement = g_irresistibleVipItems[ i ] [ E_PRICE ] * discount;
|
new Float: iCoinRequirement = g_irresistibleVipItems[ i ] [ E_PRICE ] * discount;
|
||||||
|
|
||||||
if ( current_vip != 0 && current_vip != g_irresistibleVipItems[ i ] [ E_ID ] ) {
|
/*if ( current_vip != 0 && current_vip != g_irresistibleVipItems[ i ] [ E_ID ] ) {
|
||||||
format( szMarket, sizeof( szMarket ), "%s{333333}%s\t{333333}%s\n", szMarket, g_irresistibleVipItems[ i ] [ E_NAME ], number_format( iCoinRequirement, .decimals = 0 ) );
|
format( szMarket, sizeof( szMarket ), "%s{333333}%s\t{333333}%s\n", szMarket, g_irresistibleVipItems[ i ] [ E_NAME ], number_format( iCoinRequirement, .decimals = 0 ) );
|
||||||
} else {
|
} else { }*/
|
||||||
|
|
||||||
format( szMarket, sizeof( szMarket ), "%s%s\t"COL_GOLD"%s\n", szMarket, g_irresistibleVipItems[ i ] [ E_NAME ], number_format( iCoinRequirement, .decimals = 0 ) );
|
format( szMarket, sizeof( szMarket ), "%s%s\t"COL_GOLD"%s\n", szMarket, g_irresistibleVipItems[ i ] [ E_NAME ], number_format( iCoinRequirement, .decimals = 0 ) );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// upgrade vip
|
|
||||||
new
|
|
||||||
Float: upgrade_cost = floatround( GetPlayerUpgradeVIPCost( playerid, days_left ), floatround_ceil );
|
|
||||||
|
|
||||||
if ( current_vip >= VIP_REGULAR && current_vip < VIP_GOLD && days_left >= 7.0 && upgrade_cost )
|
|
||||||
{
|
|
||||||
format( szMarket, sizeof( szMarket ), "%sUpgrade V.I.P\t"COL_GOLD"%s\n", szMarket, number_format( upgrade_cost, .decimals = 0 ) );
|
|
||||||
}
|
|
||||||
else strcat( szMarket, "{333333}Upgrade V.I.P\t{333333}Unavailable\n" );
|
|
||||||
|
|
||||||
// thats it
|
// thats it
|
||||||
strcat( szMarket, ""COL_GREEN"Buy shark cards...\t"COL_GREEN">>>\n" );
|
strcat( szMarket, ""COL_GREEN"Buy shark cards...\t"COL_GREEN">>>\n" );
|
||||||
@ -502,11 +480,17 @@ stock GetPlayerHouseSlots( playerid )
|
|||||||
|
|
||||||
switch( vip_level )
|
switch( vip_level )
|
||||||
{
|
{
|
||||||
case VIP_GOLD, VIP_PLATINUM, VIP_DIAMOND:
|
case VIP_DIAMOND:
|
||||||
slots = 255; // 99 infinite
|
slots = 255; // infinite
|
||||||
|
|
||||||
|
case VIP_PLATINUM:
|
||||||
|
slots = 10;
|
||||||
|
|
||||||
|
case VIP_GOLD:
|
||||||
|
slots = 8;
|
||||||
|
|
||||||
case VIP_BRONZE:
|
case VIP_BRONZE:
|
||||||
slots = 10;
|
slots = 6;
|
||||||
|
|
||||||
case VIP_REGULAR:
|
case VIP_REGULAR:
|
||||||
slots = 5;
|
slots = 5;
|
||||||
@ -520,21 +504,17 @@ stock GetPlayerGarageSlots( playerid ) return GetPlayerHouseSlots( playerid );
|
|||||||
stock GetPlayerVehicleSlots( playerid )
|
stock GetPlayerVehicleSlots( playerid )
|
||||||
{
|
{
|
||||||
static const
|
static const
|
||||||
slots[ 4 ] = { 3, 5, 10, 20 };
|
slots[ 5 ] = { 3, 6, 8, 10, 20 };
|
||||||
|
|
||||||
new vip_level = GetPlayerVIPLevel( playerid );
|
return slots[ GetPlayerVIPLevel( playerid ) ] + p_ExtraAssetSlots{ playerid };
|
||||||
|
|
||||||
return slots[ ( vip_level > VIP_GOLD ? VIP_GOLD : vip_level ) ] + p_ExtraAssetSlots{ playerid };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
stock GetPlayerPimpVehicleSlots( playerid )
|
stock GetPlayerPimpVehicleSlots( playerid )
|
||||||
{
|
{
|
||||||
static const
|
static const
|
||||||
slots[ 4 ] = { 3, 4, 6, 10 };
|
slots[ 5 ] = { 2, 4, 6, 8, 10 };
|
||||||
|
|
||||||
new vip_level = GetPlayerVIPLevel( playerid );
|
return slots[ GetPlayerVIPLevel( playerid ) ];
|
||||||
|
|
||||||
return slots[ ( vip_level > VIP_GOLD ? VIP_GOLD : vip_level ) ];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
stock VIPToString( viplvl )
|
stock VIPToString( viplvl )
|
||||||
@ -544,8 +524,8 @@ stock VIPToString( viplvl )
|
|||||||
|
|
||||||
switch( viplvl )
|
switch( viplvl )
|
||||||
{
|
{
|
||||||
case VIP_DIAMOND: string = "Legacy Diamond";
|
case VIP_DIAMOND: string = "Diamond";
|
||||||
case VIP_PLATINUM: string = "Legacy Platinum";
|
case VIP_PLATINUM: string = "Platinum";
|
||||||
case VIP_GOLD: string = "Gold";
|
case VIP_GOLD: string = "Gold";
|
||||||
case VIP_BRONZE: string = "Bronze";
|
case VIP_BRONZE: string = "Bronze";
|
||||||
case VIP_REGULAR: string = "Regular";
|
case VIP_REGULAR: string = "Regular";
|
||||||
@ -571,22 +551,64 @@ stock VIPToColor( viplvl )
|
|||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
stock Float: GetPlayerUpgradeVIPCost( playerid, Float: days_left = 30.0 )
|
stock SetPlayerVipLevel( playerid, level, interval = 2592000 )
|
||||||
{
|
{
|
||||||
new
|
if ( ! IsPlayerConnected( playerid ) )
|
||||||
current_vip = GetPlayerVIPLevel( playerid );
|
return;
|
||||||
|
|
||||||
if ( current_vip != VIP_BRONZE && current_vip != VIP_REGULAR )
|
// force upgrade
|
||||||
return 0.0;
|
if ( p_VIPLevel[ playerid ] < level ) {
|
||||||
|
p_VIPLevel[ playerid ] = level;
|
||||||
new
|
|
||||||
Float: total_cost = 0.0;
|
|
||||||
|
|
||||||
switch ( current_vip )
|
|
||||||
{
|
|
||||||
case VIP_BRONZE: total_cost = g_irresistibleVipItems[ 0 ] [ E_PRICE ] - g_irresistibleVipItems[ 1 ] [ E_PRICE ];
|
|
||||||
case VIP_REGULAR: total_cost = g_irresistibleVipItems[ 1 ] [ E_PRICE ] - g_irresistibleVipItems[ 2 ] [ E_PRICE ];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return total_cost * GetGVarFloat( "vip_discount" ) * ( days_left / 30.0 );
|
// check if player already has vip
|
||||||
|
if ( level ) {
|
||||||
|
if ( p_VIPExpiretime[ playerid ] > g_iTime ) p_VIPExpiretime[ playerid ] += interval;
|
||||||
|
else p_VIPExpiretime[ playerid ] += ( g_iTime + interval );
|
||||||
|
}
|
||||||
|
|
||||||
|
// expire the players vip if level 0
|
||||||
|
else {
|
||||||
|
p_VIPExpiretime[ playerid ] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// give player appropriate notes/items
|
||||||
|
switch ( level )
|
||||||
|
{
|
||||||
|
case VIP_REGULAR:
|
||||||
|
{
|
||||||
|
GivePlayerCash( playerid, 500000 );
|
||||||
|
}
|
||||||
|
case VIP_BRONZE:
|
||||||
|
{
|
||||||
|
GivePlayerCash( playerid, 2500000 );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P House (Bronze)" );
|
||||||
|
SendClientMessageToAdmins( -1, ""COL_PINK"[VIP NOTE]"COL_GREY" %s(%d) needs a House. (/viewnotes)", ReturnPlayerName( playerid ), playerid );
|
||||||
|
}
|
||||||
|
case VIP_GOLD:
|
||||||
|
{
|
||||||
|
GivePlayerCash( playerid, 5000000 );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P House (Gold)" );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P Vehicle (Gold)" );
|
||||||
|
SendClientMessageToAdmins( -1, ""COL_PINK"[VIP NOTE]"COL_GREY" %s(%d) needs a House and Vehicle. (/viewnotes)", ReturnPlayerName( playerid ), playerid );
|
||||||
|
}
|
||||||
|
case VIP_PLATINUM:
|
||||||
|
{
|
||||||
|
GivePlayerCash( playerid, 12500000 );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P House (Platinum)" );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P Vehicle (Platinum)" );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P Garage" );
|
||||||
|
SendClientMessageToAdmins( -1, ""COL_PINK"[VIP NOTE]"COL_GREY" %s(%d) needs a House, Vehicle and Garage. (/viewnotes)", ReturnPlayerName( playerid ), playerid );
|
||||||
|
}
|
||||||
|
case VIP_DIAMOND:
|
||||||
|
{
|
||||||
|
GivePlayerCash( playerid, 25000000 );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P House (Diamond)" );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P Vehicle (Diamond)" );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P Garage (Diamond)" );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P Gate (Diamond)" );
|
||||||
|
AddPlayerNote( playerid, 1, COL_GOLD # "V.I.P Weed Business (Diamond)" );
|
||||||
|
SendClientMessageToAdmins( -1, ""COL_PINK"[VIP NOTE]"COL_GREY" %s(%d) needs a House, Vehicle, Garage, Gate and Weed Biz. (/viewnotes)", ReturnPlayerName( playerid ), playerid );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -414,24 +414,24 @@ public OnGameModeInit()
|
|||||||
mysql_function_query( dbHandle, "DELETE a2,a3 FROM `USERS` a1 " \
|
mysql_function_query( dbHandle, "DELETE a2,a3 FROM `USERS` a1 " \
|
||||||
"LEFT JOIN `FURNITURE` a2 on a1.`ID` = a2.`OWNER` "\
|
"LEFT JOIN `FURNITURE` a2 on a1.`ID` = a2.`OWNER` "\
|
||||||
"LEFT JOIN `APARTMENTS` a3 on a1.`NAME` = a3.`OWNER` "\
|
"LEFT JOIN `APARTMENTS` a3 on a1.`NAME` = a3.`OWNER` "\
|
||||||
"WHERE UNIX_TIMESTAMP()-a1.`LASTLOGGED` > IF(a1.`VIP_PACKAGE` >= 3, 2592000, 1209600)", true, "onRemoveInactiveRows", "d", 3 );
|
"WHERE UNIX_TIMESTAMP()-a1.`LASTLOGGED` > IF(a1.`VIP_PACKAGE` >= 5, 2592000, 1209600)", true, "onRemoveInactiveRows", "d", 3 );
|
||||||
|
|
||||||
mysql_function_query( dbHandle, "UPDATE `USERS` a1 JOIN `HOUSES` a2 ON a1.`NAME` = a2.`OWNER` "\
|
mysql_function_query( dbHandle, "UPDATE `USERS` a1 JOIN `HOUSES` a2 ON a1.`NAME` = a2.`OWNER` "\
|
||||||
"SET a2.`NAME`='Home', a2.`OWNER`='No-one', a2.`TX`=" #H_DEFAULT_X ", a2.`TY`=" #H_DEFAULT_Y ", a2.`TZ`=" #H_DEFAULT_Z ", a2.`INTERIOR`=2, a2.`PASSWORD`='N/A', a2.`WEAPONS`='0.0.0.0.0.0.0.', a2.`AMMO`='-1.-1.-1.-1.-1.-1.-1.' "\
|
"SET a2.`NAME`='Home', a2.`OWNER`='No-one', a2.`TX`=" #H_DEFAULT_X ", a2.`TY`=" #H_DEFAULT_Y ", a2.`TZ`=" #H_DEFAULT_Z ", a2.`INTERIOR`=2, a2.`PASSWORD`='N/A', a2.`WEAPONS`='0.0.0.0.0.0.0.', a2.`AMMO`='-1.-1.-1.-1.-1.-1.-1.' "\
|
||||||
"WHERE UNIX_TIMESTAMP()-a1.`LASTLOGGED` > IF(a1.`VIP_PACKAGE` >= 3, 2592000, 1209600)", true, "onRemoveInactiveRows", "d", 4 );
|
"WHERE UNIX_TIMESTAMP()-a1.`LASTLOGGED` > IF(a1.`VIP_PACKAGE` >= 5, 2592000, 1209600)", true, "onRemoveInactiveRows", "d", 4 );
|
||||||
|
|
||||||
// Truncate banned players after 2 weeks
|
// Truncate banned players after 2 weeks
|
||||||
mysql_function_query( dbHandle, "UPDATE `USERS` a1 JOIN `BANS` a2 ON a1.`NAME` = a2.`NAME` "\
|
mysql_function_query( dbHandle, "UPDATE `USERS` a1 JOIN `BANS` a2 ON a1.`NAME` = a2.`NAME` "\
|
||||||
"SET a1.`BANKMONEY`=0, a1.`CASH`=0 "\
|
"SET a1.`BANKMONEY`=0, a1.`CASH`=0 "\
|
||||||
"WHERE UNIX_TIMESTAMP()-a1.`LASTLOGGED` > IF(a1.`VIP_PACKAGE` >= 3, 2592000, 1209600)", true, "onRemoveInactiveRows", "d", 5 );
|
"WHERE UNIX_TIMESTAMP()-a1.`LASTLOGGED` > IF(a1.`VIP_PACKAGE` >= 5, 2592000, 1209600)", true, "onRemoveInactiveRows", "d", 5 );
|
||||||
|
|
||||||
// Update vehicles with inactive garages.
|
// Update vehicles with inactive garages.
|
||||||
mysql_function_query( dbHandle, "UPDATE `VEHICLES` v JOIN `GARAGES` g ON g.`ID` = v.`GARAGE` JOIN `USERS` u ON u.`ID` = v.`OWNER` "\
|
mysql_function_query( dbHandle, "UPDATE `VEHICLES` v JOIN `GARAGES` g ON g.`ID` = v.`GARAGE` JOIN `USERS` u ON u.`ID` = v.`OWNER` "\
|
||||||
"SET v.`X`=g.`X`, v.`Y`=g.`Y`, v.`Z`=g.`Z`, v.`GARAGE`=-1 "\
|
"SET v.`X`=g.`X`, v.`Y`=g.`Y`, v.`Z`=g.`Z`, v.`GARAGE`=-1 "\
|
||||||
"WHERE v.`GARAGE` != -1 AND UNIX_TIMESTAMP()-u.`LASTLOGGED` > IF(u.`VIP_PACKAGE` >= 3, 2592000, 1209600)", true, "onRemoveInactiveRows", "d", 6 );
|
"WHERE v.`GARAGE` != -1 AND UNIX_TIMESTAMP()-u.`LASTLOGGED` > IF(u.`VIP_PACKAGE` >= 5, 2592000, 1209600)", true, "onRemoveInactiveRows", "d", 6 );
|
||||||
|
|
||||||
// mysql_function_query( dbHandle, "UPDATE `GARAGES` g JOIN `USERS` u ON u.`ID` = g.`OWNER` SET g.`OWNER`=0, g.`INTERIOR`=0 WHERE UNIX_TIMESTAMP()-u.`LASTLOGGED` > 1209600;", true, "onRemoveInactiveRows", "d", 6 );
|
// mysql_function_query( dbHandle, "UPDATE `GARAGES` g JOIN `USERS` u ON u.`ID` = g.`OWNER` SET g.`OWNER`=0, g.`INTERIOR`=0 WHERE UNIX_TIMESTAMP()-u.`LASTLOGGED` > 1209600;", true, "onRemoveInactiveRows", "d", 6 );
|
||||||
mysql_function_query( dbHandle, "DELETE g FROM `GARAGES` g JOIN `USERS` u ON u.`ID` = g.`OWNER` WHERE UNIX_TIMESTAMP()-u.`LASTLOGGED` > IF(u.`VIP_PACKAGE` >= 3, 2592000, 1209600)", true, "onRemoveInactiveRows", "d", 7 );
|
mysql_function_query( dbHandle, "DELETE g FROM `GARAGES` g JOIN `USERS` u ON u.`ID` = g.`OWNER` WHERE UNIX_TIMESTAMP()-u.`LASTLOGGED` > IF(u.`VIP_PACKAGE` >= 5, 2592000, 1209600)", true, "onRemoveInactiveRows", "d", 7 );
|
||||||
|
|
||||||
// Remove 25% of wealth off 2 weeks inactive players.
|
// Remove 25% of wealth off 2 weeks inactive players.
|
||||||
// mysql_function_query( dbHandle, "UPDATE `USERS` SET `CASH`=`CASH`*0.75,`BANKMONEY`=`BANKMONEY`*0.75 WHERE UNIX_TIMESTAMP()-`LASTLOGGED`>1209600", true, "onRemoveInactiveRows", "d", 8 );
|
// mysql_function_query( dbHandle, "UPDATE `USERS` SET `CASH`=`CASH`*0.75,`BANKMONEY`=`BANKMONEY`*0.75 WHERE UNIX_TIMESTAMP()-`LASTLOGGED`>1209600", true, "onRemoveInactiveRows", "d", 8 );
|
||||||
@ -1134,10 +1134,10 @@ public ZoneTimer( )
|
|||||||
Float: iCoinGenRate = 35.0;
|
Float: iCoinGenRate = 35.0;
|
||||||
|
|
||||||
// VIP check
|
// VIP check
|
||||||
if ( p_VIPLevel[ playerid ] >= VIP_GOLD )
|
if ( p_VIPLevel[ playerid ] >= VIP_DIAMOND )
|
||||||
iCoinGenRate *= 0.75; // Reduce by 25% if Diamond
|
iCoinGenRate *= 0.75; // Reduce by 25% if Diamond
|
||||||
|
|
||||||
else if ( p_VIPLevel[ playerid ] == VIP_BRONZE )
|
else if ( p_VIPLevel[ playerid ] == VIP_PLATINUM )
|
||||||
iCoinGenRate *= 0.90; // Reduce by 10% if Diamond
|
iCoinGenRate *= 0.90; // Reduce by 10% if Diamond
|
||||||
|
|
||||||
// Happy Hour
|
// Happy Hour
|
||||||
@ -1927,9 +1927,9 @@ public OnPlayerSpawn( playerid )
|
|||||||
SetPlayerVirtualWorld( playerid, 0 );
|
SetPlayerVirtualWorld( playerid, 0 );
|
||||||
|
|
||||||
if ( p_VIPLevel[ playerid ] >= VIP_REGULAR && p_VIPWep1{ playerid } != 0 ) GivePlayerWeapon( playerid, p_VIPWep1{ playerid }, 200 );
|
if ( p_VIPLevel[ playerid ] >= VIP_REGULAR && p_VIPWep1{ playerid } != 0 ) GivePlayerWeapon( playerid, p_VIPWep1{ playerid }, 200 );
|
||||||
if ( p_VIPLevel[ playerid ] >= VIP_BRONZE && p_VIPWep2{ playerid } != 0 ) GivePlayerWeapon( playerid, p_VIPWep2{ playerid }, 200 );
|
if ( p_VIPLevel[ playerid ] >= VIP_GOLD && p_VIPWep2{ playerid } != 0 ) GivePlayerWeapon( playerid, p_VIPWep2{ playerid }, 200 );
|
||||||
if ( p_VIPLevel[ playerid ] >= VIP_GOLD && p_VIPWep3{ playerid } != 0 ) GivePlayerWeapon( playerid, p_VIPWep3{ playerid }, 200 );
|
if ( p_VIPLevel[ playerid ] >= VIP_PLATINUM && p_VIPWep3{ playerid } != 0 ) GivePlayerWeapon( playerid, p_VIPWep3{ playerid }, 200 );
|
||||||
if ( p_VIPLevel[ playerid ] >= VIP_BRONZE ) SetPlayerArmour( playerid, 100.0 ); // Free armour on spawn.
|
if ( p_VIPLevel[ playerid ] >= VIP_GOLD ) SetPlayerArmour( playerid, 100.0 ); // Free armour on spawn.
|
||||||
|
|
||||||
CallLocalFunction( "SetPlayerRandomSpawn", "d", playerid );
|
CallLocalFunction( "SetPlayerRandomSpawn", "d", playerid );
|
||||||
|
|
||||||
@ -2330,7 +2330,7 @@ thread OnTaxEconomy( starting )
|
|||||||
|
|
||||||
// players
|
// players
|
||||||
foreach ( new playerid : Player ) {
|
foreach ( new playerid : Player ) {
|
||||||
new Float: tax_discount = p_VIPLevel[ playerid ] >= VIP_GOLD ? 0.5 : 1.0;
|
new Float: tax_discount = p_VIPLevel[ playerid ] >= VIP_DIAMOND ? 0.5 : 1.0;
|
||||||
new player_tax = floatround( float( GetPlayerTotalCash( playerid ) ) * tax_rate * tax_discount );
|
new player_tax = floatround( float( GetPlayerTotalCash( playerid ) ) * tax_rate * tax_discount );
|
||||||
|
|
||||||
if ( player_tax > 0 ) {
|
if ( player_tax > 0 ) {
|
||||||
@ -2352,7 +2352,7 @@ thread OnTaxEconomy( starting )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// queries
|
// queries
|
||||||
mysql_single_query( sprintf( "UPDATE `USERS` SET `CASH`=`CASH`*IF(`VIP_PACKAGE`>=3,%f,%f),`BANKMONEY`=`BANKMONEY`*IF(`VIP_PACKAGE`>=3,%f,%f) WHERE `ONLINE`=0 AND (`BANKMONEY`+`CASH`)>0", 1.0 - tax_rate / 2.0, 1.0 - tax_rate, 1.0 - tax_rate / 2.0, 1.0 - tax_rate ) );
|
mysql_single_query( sprintf( "UPDATE `USERS` SET `CASH`=`CASH`*IF(`VIP_PACKAGE`>=3,%f,%f),`BANKMONEY`=`BANKMONEY`*IF(`VIP_PACKAGE`>=5,%f,%f) WHERE `ONLINE`=0 AND (`BANKMONEY`+`CASH`)>0", 1.0 - tax_rate / 2.0, 1.0 - tax_rate, 1.0 - tax_rate / 2.0, 1.0 - tax_rate ) );
|
||||||
mysql_single_query( sprintf( "UPDATE `BUSINESSES` SET `BANK`=`BANK`*%f WHERE `BANK`>0", 1.0 - tax_rate ) );
|
mysql_single_query( sprintf( "UPDATE `BUSINESSES` SET `BANK`=`BANK`*%f WHERE `BANK`>0", 1.0 - tax_rate ) );
|
||||||
mysql_single_query( sprintf( "UPDATE `GANGS` SET `BANK`=`BANK`*%f WHERE `BANK`>0", 1.0 - tax_rate ) );
|
mysql_single_query( sprintf( "UPDATE `GANGS` SET `BANK`=`BANK`*%f WHERE `BANK`>0", 1.0 - tax_rate ) );
|
||||||
|
|
||||||
@ -4184,7 +4184,7 @@ CMD:vipcmds( playerid, params[ ] )
|
|||||||
CMD:vipspawnwep( playerid, params[ ] )
|
CMD:vipspawnwep( playerid, params[ ] )
|
||||||
{
|
{
|
||||||
if ( p_VIPLevel[ playerid ] < VIP_REGULAR ) return SendError( playerid, "You are not a V.I.P, to become one visit "COL_GREY"donate.sfcnr.com" );
|
if ( p_VIPLevel[ playerid ] < VIP_REGULAR ) return SendError( playerid, "You are not a V.I.P, to become one visit "COL_GREY"donate.sfcnr.com" );
|
||||||
format( szNormalString, sizeof( szNormalString ), "%s\n"COL_BRONZE"%s\n"COL_GOLD"%s", p_VIPWep1{ playerid } ? ReturnWeaponName( p_VIPWep1{ playerid } ) : ( "Nothing" ), p_VIPWep2{ playerid } ? ReturnWeaponName( p_VIPWep2{ playerid } ) : ( "Nothing" ), p_VIPWep3{ playerid } ? ReturnWeaponName( p_VIPWep3{ playerid } ) : ( "Nothing" ) );
|
format( szNormalString, sizeof( szNormalString ), "%s\n"COL_GOLD"%s\n"COL_PLATINUM"%s", p_VIPWep1{ playerid } ? ReturnWeaponName( p_VIPWep1{ playerid } ) : ( "Nothing" ), p_VIPWep2{ playerid } ? ReturnWeaponName( p_VIPWep2{ playerid } ) : ( "Nothing" ), p_VIPWep3{ playerid } ? ReturnWeaponName( p_VIPWep3{ playerid } ) : ( "Nothing" ) );
|
||||||
ShowPlayerDialog( playerid, DIALOG_VIP_WEP, DIALOG_STYLE_LIST, "{FFFFFF}Spawn Weapons", szNormalString, "Select", "" );
|
ShowPlayerDialog( playerid, DIALOG_VIP_WEP, DIALOG_STYLE_LIST, "{FFFFFF}Spawn Weapons", szNormalString, "Select", "" );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -4246,8 +4246,8 @@ CMD:vipjob( playerid, params[ ] )
|
|||||||
if ( p_VIPLevel[ playerid ] < VIP_REGULAR )
|
if ( p_VIPLevel[ playerid ] < VIP_REGULAR )
|
||||||
return SendError( playerid, "You are not a V.I.P, to become one visit "COL_GREY"donate.sfcnr.com" );
|
return SendError( playerid, "You are not a V.I.P, to become one visit "COL_GREY"donate.sfcnr.com" );
|
||||||
|
|
||||||
if ( p_VIPLevel[ playerid ] < VIP_GOLD )
|
if ( p_VIPLevel[ playerid ] < VIP_DIAMOND )
|
||||||
return SendError( playerid, "This command requires you to be Gold V.I.P." );
|
return SendError( playerid, "This command requires you to be Diamond V.I.P." );
|
||||||
|
|
||||||
if ( isnull( params ) )
|
if ( isnull( params ) )
|
||||||
return SendUsage( playerid, "/vipjob [PART OF JOB NAME]" );
|
return SendUsage( playerid, "/vipjob [PART OF JOB NAME]" );
|
||||||
@ -9064,16 +9064,16 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
if ( !IsPlayerInRangeOfPoint( playerid, 5.0, -1966.1591, 852.7100, 1214.2678 ) && !IsPlayerInRangeOfPoint( playerid, 5.0, -1944.1324, 830.0725, 1214.2678 ) && !IsPlayerInRangeOfPoint( playerid, 5.0, 60.3115, 121.5226, 1017.4534 ) )
|
if ( !IsPlayerInRangeOfPoint( playerid, 5.0, -1966.1591, 852.7100, 1214.2678 ) && !IsPlayerInRangeOfPoint( playerid, 5.0, -1944.1324, 830.0725, 1214.2678 ) && !IsPlayerInRangeOfPoint( playerid, 5.0, 60.3115, 121.5226, 1017.4534 ) )
|
||||||
return SendError( playerid, "You must be near a gun vending machine inside the V.I.P lounge to use this." );
|
return SendError( playerid, "You must be near a gun vending machine inside the V.I.P lounge to use this." );
|
||||||
|
|
||||||
if ( p_VIPArmourRedeem[ playerid ] > g_iTime && p_VIPLevel[ playerid ] < VIP_GOLD )
|
if ( p_VIPArmourRedeem[ playerid ] > g_iTime && p_VIPLevel[ playerid ] < VIP_DIAMOND )
|
||||||
return SendError( playerid, "You must wait %d seconds to redeem another armour set again.", p_VIPArmourRedeem[ playerid ] - g_iTime );
|
return SendError( playerid, "You must wait %d seconds to redeem another armour set again.", p_VIPArmourRedeem[ playerid ] - g_iTime );
|
||||||
|
|
||||||
SetPlayerArmour( playerid, 100.0 );
|
SetPlayerArmour( playerid, 100.0 );
|
||||||
p_VIPArmourRedeem[ playerid ] = g_iTime + ( p_VIPLevel[ playerid ] == VIP_BRONZE ? 60 : 300 );
|
p_VIPArmourRedeem[ playerid ] = g_iTime + ( p_VIPLevel[ playerid ] == VIP_PLATINUM ? 60 : 300 );
|
||||||
SendServerMessage( playerid, "You have redeemed an armour set." );
|
SendServerMessage( playerid, "You have redeemed an armour set." );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( p_VIPWeaponRedeem[ playerid ] > g_iTime && p_VIPLevel[ playerid ] < VIP_GOLD )
|
if ( p_VIPWeaponRedeem[ playerid ] > g_iTime && p_VIPLevel[ playerid ] < VIP_DIAMOND )
|
||||||
return SendError( playerid, "You must wait %d seconds to redeem another weapon again.", p_VIPWeaponRedeem[ playerid ] - g_iTime );
|
return SendError( playerid, "You must wait %d seconds to redeem another weapon again.", p_VIPWeaponRedeem[ playerid ] - g_iTime );
|
||||||
|
|
||||||
new weaponid;
|
new weaponid;
|
||||||
@ -9085,7 +9085,7 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
}
|
}
|
||||||
GivePlayerWeapon( playerid, weaponid, 0xFFFF );
|
GivePlayerWeapon( playerid, weaponid, 0xFFFF );
|
||||||
SendServerMessage( playerid, "You have redeemed a %s.", ReturnWeaponName( weaponid ) );
|
SendServerMessage( playerid, "You have redeemed a %s.", ReturnWeaponName( weaponid ) );
|
||||||
p_VIPWeaponRedeem[ playerid ] = g_iTime + ( p_VIPLevel[ playerid ] == VIP_BRONZE ? 60 : 300 );
|
p_VIPWeaponRedeem[ playerid ] = g_iTime + ( p_VIPLevel[ playerid ] == VIP_PLATINUM ? 60 : 300 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( ( dialogid == DIALOG_FIGHTSTYLE ) && response )
|
if ( ( dialogid == DIALOG_FIGHTSTYLE ) && response )
|
||||||
@ -9150,8 +9150,8 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
}
|
}
|
||||||
if ( ( dialogid == DIALOG_VIP_WEP ) && response )
|
if ( ( dialogid == DIALOG_VIP_WEP ) && response )
|
||||||
{
|
{
|
||||||
if ( listitem == 1 && p_VIPLevel[ playerid ] < VIP_BRONZE ) return SendError( playerid, "You can only use this slot if you are a "COL_BRONZE"Bronze V.I.P{FFFFFF} or higher." );
|
if ( listitem == 1 && p_VIPLevel[ playerid ] < VIP_GOLD ) return SendError( playerid, "You can only use this slot if you are a "COL_BRONZE"Gold V.I.P{FFFFFF} or higher." );
|
||||||
if ( listitem == 2 && p_VIPLevel[ playerid ] < VIP_GOLD ) return SendError( playerid, "You can only use this slot if you are a "COL_GOLD"Gold V.I.P{FFFFFF} or higher." );
|
if ( listitem == 2 && p_VIPLevel[ playerid ] < VIP_PLATINUM ) return SendError( playerid, "You can only use this slot if you are a "COL_GOLD"Platinum V.I.P{FFFFFF} or higher." );
|
||||||
ShowPlayerDialog( playerid, DIALOG_VIP_WEP_SELECT, DIALOG_STYLE_LIST, "{FFFFFF}Weapon Select", ""COL_RED"Remove Weapon On This Slot\n9mm Pistol\nSilenced Pistol\nDesert Eagle\nShotgun\nSawn-off Shotgun\nSpas 12\nMac 10\nMP5\nAK-47\nM4\nTec 9\nRifle\nSniper", "Select", "Cancel");
|
ShowPlayerDialog( playerid, DIALOG_VIP_WEP_SELECT, DIALOG_STYLE_LIST, "{FFFFFF}Weapon Select", ""COL_RED"Remove Weapon On This Slot\n9mm Pistol\nSilenced Pistol\nDesert Eagle\nShotgun\nSawn-off Shotgun\nSpas 12\nMac 10\nMP5\nAK-47\nM4\nTec 9\nRifle\nSniper", "Select", "Cancel");
|
||||||
p_VIPWep_Modify{ playerid } = listitem;
|
p_VIPWep_Modify{ playerid } = listitem;
|
||||||
}
|
}
|
||||||
@ -9725,68 +9725,6 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
DeletePVar( playerid, "just_donated" );
|
DeletePVar( playerid, "just_donated" );
|
||||||
return UpdateGlobalDonated( playerid, fAmount, !response );
|
return UpdateGlobalDonated( playerid, fAmount, !response );
|
||||||
}
|
}
|
||||||
/*if ( dialogid == DIALOG_DONATED_PLATBRONZE )
|
|
||||||
{
|
|
||||||
if ( response )
|
|
||||||
{
|
|
||||||
new
|
|
||||||
pID;
|
|
||||||
|
|
||||||
if ( sscanf( inputtext, "u", pID ) )
|
|
||||||
{
|
|
||||||
SendError( playerid, "Please enter a player's ID or name." );
|
|
||||||
ShowPlayerDialog( playerid, DIALOG_DONATED_PLATBRONZE, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"As you've redeemed Platinum V.I.P, you have the option of gifting Bronze VIP to someone.\n\nIf you would like to gift it to yourself, type your name/id or the person you're gifting it to.\n\n"COL_ORANGE"If you just don't know yet, cancel and PM Lorenc on the forum when you make a decision!", "Gift it!", "I'll Think!" );
|
|
||||||
}
|
|
||||||
else if ( !IsPlayerConnected( pID ) )
|
|
||||||
{
|
|
||||||
SendError( playerid, "This player is not connected." );
|
|
||||||
ShowPlayerDialog( playerid, DIALOG_DONATED_PLATBRONZE, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"As you've redeemed Platinum V.I.P, you have the option of gifting Bronze VIP to someone.\n\nIf you would like to gift it to yourself, type your name/id or the person you're gifting it to.\n\n"COL_ORANGE"If you just don't know yet, cancel and PM Lorenc on the forum when you make a decision!", "Gift it!", "I'll Think!" );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[V.I.P]"COL_WHITE" You have gifted Bronze V.I.P to %s(%d)!", ReturnPlayerName( pID ), pID );
|
|
||||||
SetPlayerVipLevel( pID, VIP_BRONZE );
|
|
||||||
ShowPlayerVipRedeemedDialog( playerid );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AddPlayerNote( playerid, -1, "{CD7F32}Bronze V.I.P" #COL_WHITE );
|
|
||||||
SendServerMessage( playerid, "Okay. This has been noted down for your account and will be given to you at a stage that you want, do contact Lorenc though." );
|
|
||||||
ShowPlayerVipRedeemedDialog( playerid );
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
/*if ( dialogid == DIALOG_DONATED_DIAGOLD )
|
|
||||||
{
|
|
||||||
if ( response )
|
|
||||||
{
|
|
||||||
new
|
|
||||||
pID;
|
|
||||||
|
|
||||||
if ( sscanf( inputtext, "u", pID ) )
|
|
||||||
{
|
|
||||||
SendError( playerid, "Please enter a player's ID or name." );
|
|
||||||
ShowPlayerDialog( playerid, DIALOG_DONATED_DIAGOLD, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"As you've redeemed Diamond V.I.P, you have the option of gifting Gold VIP to someone.\n\nIf you would like to gift it to yourself, type your name/id or the person you're gifting it to.\n\n"COL_ORANGE"If you just don't know yet, cancel and PM Lorenc on the forum when you make a decision!", "Gift it!", "I'll Think!" );
|
|
||||||
}
|
|
||||||
else if ( !IsPlayerConnected( pID ) )
|
|
||||||
{
|
|
||||||
SendError( playerid, "This player is not connected." );
|
|
||||||
ShowPlayerDialog( playerid, DIALOG_DONATED_DIAGOLD, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"As you've redeemed Diamond V.I.P, you have the option of gifting Gold VIP to someone.\n\nIf you would like to gift it to yourself, type your name/id or the person you're gifting it to.\n\n"COL_ORANGE"If you just don't know yet, cancel and PM Lorenc on the forum when you make a decision!", "Gift it!", "I'll Think!" );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[V.I.P]"COL_WHITE" You have gifted Gold V.I.P to %s(%d)!", ReturnPlayerName( pID ), pID );
|
|
||||||
SetPlayerVipLevel( pID, VIP_GOLD );
|
|
||||||
ShowPlayerVipRedeemedDialog( playerid );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AddPlayerNote( playerid, -1, ""COL_GOLD"Gold V.I.P" #COL_WHITE );
|
|
||||||
SendServerMessage( playerid, "Okay. This has been noted down for your account and will be given to you at a stage that you want, do contact Lorenc though." );
|
|
||||||
ShowPlayerVipRedeemedDialog( playerid );
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
if ( ( dialogid == DIALOG_UNBAN_CLASS ) && response )
|
if ( ( dialogid == DIALOG_UNBAN_CLASS ) && response )
|
||||||
{
|
{
|
||||||
cmd_unbanme( playerid, "" );
|
cmd_unbanme( playerid, "" );
|
||||||
@ -12105,27 +12043,6 @@ stock hasBadDrivebyWeapon( playerid )
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
stock SetPlayerVipLevel( pID, level, interval = 2592000 )
|
|
||||||
{
|
|
||||||
if ( IsPlayerConnected( pID ) )
|
|
||||||
{
|
|
||||||
// force upgrade
|
|
||||||
if ( p_VIPLevel[ pID ] < level ) {
|
|
||||||
p_VIPLevel[ pID ] = level;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( level ) {
|
|
||||||
if ( p_VIPExpiretime[ pID ] > g_iTime ) p_VIPExpiretime[ pID ] += interval;
|
|
||||||
else p_VIPExpiretime[ pID ] += ( g_iTime + interval );
|
|
||||||
}
|
|
||||||
|
|
||||||
// expire the players vip if level 0
|
|
||||||
else {
|
|
||||||
p_VIPExpiretime[ pID ] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stock CensoreString( query[ ], characters = 5 )
|
stock CensoreString( query[ ], characters = 5 )
|
||||||
{
|
{
|
||||||
static
|
static
|
||||||
|
Loading…
Reference in New Issue
Block a user