move player market cmds to /ic

This commit is contained in:
Lorenc Pekaj 2018-09-29 06:05:39 +10:00
parent f81d656161
commit 556a008573
5 changed files with 69 additions and 75 deletions

View File

@ -30,10 +30,10 @@
#define DIALOG_VEHICLE_SPAWN 1018 #define DIALOG_VEHICLE_SPAWN 1018
#define DIALOG_ARENAS 1019 #define DIALOG_ARENAS 1019
#define DIALOG_BOUGHT_VEH 1020 #define DIALOG_BOUGHT_VEH 1020
#define DIALOG_PERKS 1021 //#define DIALOG_PERKS 1021
#define DIALOG_PERKS_P 1022 //#define DIALOG_PERKS_P 1022
#define DIALOG_VIP 1023 #define DIALOG_VIP 1023
#define DIALOG_PERKS_V 1024 //#define DIALOG_PERKS_V 1024
#define DIALOG_DONATED 1025 #define DIALOG_DONATED 1025
#define DIALOG_VEHICLE_LOCATE 1026 #define DIALOG_VEHICLE_LOCATE 1026
#define DIALOG_GANG_COLOR 1027 #define DIALOG_GANG_COLOR 1027

View File

@ -120,14 +120,6 @@ CMD:level( playerid, params[ ] )
return ShowPlayerDialog( playerid, DIALOG_NULL, DIALOG_STYLE_TABLIST_HEADERS, sprintf( "{FFFFFF}Player Level - Total Level %d", player_total_lvl ), szLargeString, "Close", "" ); return ShowPlayerDialog( playerid, DIALOG_NULL, DIALOG_STYLE_TABLIST_HEADERS, sprintf( "{FFFFFF}Player Level - Total Level %d", player_total_lvl ), szLargeString, "Close", "" );
} }
CMD:givelevel( playerid, params[ ] ) {
new rank, Float: xp;
sscanf( params, "df", rank, xp );
GivePlayerExperience( playerid, E_LEVELS: rank, xp );
return 1;
}
/* ** SQL Threads ** */ /* ** SQL Threads ** */
thread Experience_OnLoad( playerid ) thread Experience_OnLoad( playerid )
{ {
@ -164,7 +156,7 @@ stock GivePlayerExperience( playerid, E_LEVELS: level, Float: default_xp = 1.0,
new Float: next_rank_xp = ( g_levelData[ _: level ] [ E_MAX_UNITS ] * g_levelData[ _: level ] [ E_XP_DILATION ] ) / ( EXP_MAX_PLAYER_LEVEL * EXP_MAX_PLAYER_LEVEL ) * float( next_rank * next_rank ); new Float: next_rank_xp = ( g_levelData[ _: level ] [ E_MAX_UNITS ] * g_levelData[ _: level ] [ E_XP_DILATION ] ) / ( EXP_MAX_PLAYER_LEVEL * EXP_MAX_PLAYER_LEVEL ) * float( next_rank * next_rank );
if ( g_playerExperience[ playerid ] [ level ] + xp_earned >= next_rank_xp ) { if ( g_playerExperience[ playerid ] [ level ] + xp_earned >= next_rank_xp ) {
ShowPlayerHelpDialog( playerid, 10000, "~g~~h~Congratulations!~n~~n~~w~Your %s Level is now ~y~%d.", g_levelData[ _: level ] [ E_NAME ], next_rank ); ShowPlayerHelpDialog( playerid, 10000, "~y~~h~Congratulations!~n~~n~~w~Your %s Level is now ~y~%d.", g_levelData[ _: level ] [ E_NAME ], next_rank );
if ( !IsPlayerUsingRadio( playerid ) ) PlayAudioStreamForPlayer( playerid, "http://files.sfcnr.com/game_sounds/levelup.mp3" ); if ( !IsPlayerUsingRadio( playerid ) ) PlayAudioStreamForPlayer( playerid, "http://files.sfcnr.com/game_sounds/levelup.mp3" );
} }
@ -179,11 +171,12 @@ stock GivePlayerExperience( playerid, E_LEVELS: level, Float: default_xp = 1.0,
SetTimerEx( "Experience_HideIncrementTD", 3500, false, "d", playerid ); SetTimerEx( "Experience_HideIncrementTD", 3500, false, "d", playerid );
// save to database // save to database
mysql_format( format(
dbHandle, szBigString, sizeof( szBigString ), szBigString, sizeof( szBigString ),
"INSERT INTO `USER_LEVELS` (`USER_ID`,`LEVEL_ID`,`EXPERIENCE`) VALUES(%d,%d,%d) ON DUPLICATE KEY UPDATE `EXPERIENCE`=%d", "INSERT INTO `USER_LEVELS` (`USER_ID`,`LEVEL_ID`,`EXPERIENCE`) VALUES(%d,%d,%d) ON DUPLICATE KEY UPDATE `EXPERIENCE`=%d",
GetPlayerAccountID( playerid ), _: level, g_playerExperience[ playerid ] [ level ], g_playerExperience[ playerid ] [ level ] GetPlayerAccountID( playerid ), _: level, g_playerExperience[ playerid ] [ level ], g_playerExperience[ playerid ] [ level ]
); );
mysql_single_query( szBigString );
return 1; return 1;
} }
@ -191,12 +184,12 @@ function Experience_HideIncrementTD( playerid ) {
return PlayerTextDrawHide( playerid, p_ExperienceAwardTD[ playerid ] ); return PlayerTextDrawHide( playerid, p_ExperienceAwardTD[ playerid ] );
} }
stock GetPlayerTotalLevel( playerid, &level = 0 ) { /*stock GetPlayerTotalLevel( playerid, &level = 0 ) {
for ( new l = 0; l < sizeof ( g_levelData ); l ++ ) { for ( new l = 0; l < sizeof ( g_levelData ); l ++ ) {
level += floatround( GetPlayerLevel( playerid, E_LEVELS: l ), floatround_floor ); level += floatround( GetPlayerLevel( playerid, E_LEVELS: l ), floatround_floor );
} }
return level; return level;
} }*/
/* ** Migrations ** */ /* ** Migrations ** */
/* /*

View File

@ -70,6 +70,7 @@ static stock
{ "{8ADE47}Stephanie:"COL_WHITE" Contribute to our feature "COL_GREY"/crowdfunds"COL_WHITE"! Early supporters get benefits!" }, { "{8ADE47}Stephanie:"COL_WHITE" Contribute to our feature "COL_GREY"/crowdfunds"COL_WHITE"! Early supporters get benefits!" },
{ "{8ADE47}Stephanie:"COL_WHITE" Don't want to be interrupted as an innocent player? Enter passive mode with "COL_GREY"/passive"COL_WHITE"!" }, { "{8ADE47}Stephanie:"COL_WHITE" Don't want to be interrupted as an innocent player? Enter passive mode with "COL_GREY"/passive"COL_WHITE"!" },
{ "{8ADE47}Stephanie:"COL_WHITE" You can buy premium player homes using "COL_GREY"/estate"COL_WHITE"!" } { "{8ADE47}Stephanie:"COL_WHITE" You can buy premium player homes using "COL_GREY"/estate"COL_WHITE"!" }
{ "{8ADE47}Stephanie:"COL_WHITE" You can buy Irresistible Coins from players using "COL_GREY"/ic buy"COL_WHITE"!" }
}, },
g_randomMessageTick = 0 g_randomMessageTick = 0
; ;

View File

@ -59,19 +59,22 @@ hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
} }
/* ** Commands ** */ /* ** Commands ** */
CMD:sellcoins( playerid, params[ ] ) hook cmd_ic( playerid, params[ ] )
{ {
if ( ! IsPlayerSecurityVerified( playerid ) ) if ( ! IsPlayerSecurityVerified( playerid ) ) {
return SendError( playerid, "You must be verified in order to use this feature. "COL_YELLOW"(use /verify)" ); return SendError( playerid, "You must be verified in order to use this feature. "COL_YELLOW"(use /verify)" ), Y_HOOKS_BREAK_RETURN_1;
}
if ( !strcmp( params, "sell", true, 4 ) )
{
new new
Float: quantity, price; Float: quantity, price;
if ( GetPlayerVIPLevel( playerid ) < VIP_BRONZE ) return SendError( playerid, "You are not a Bronze V.I.P, to become one visit "COL_GREY"donate.sfcnr.com" ); if ( GetPlayerVIPLevel( playerid ) < VIP_BRONZE ) SendError( playerid, "You are not a Bronze V.I.P, to become one visit "COL_GREY"donate.sfcnr.com" );
else if ( sscanf( params, "df", price, quantity ) ) return SendUsage( playerid, "/sellcoins [PRICE_PER_COIN] [COINS]" ); else if ( sscanf( params[ 5 ], "fd", quantity, price ) ) SendUsage( playerid, "/ic sell [COINS] [PRICE_PER_COIN]" );
else if ( quantity < 10.0 ) return SendError( playerid, "The minimum amount you can sell is 10.0 Irresistible Coins." ); else if ( quantity < 1.0 ) SendError( playerid, "The minimum amount you can sell is 1.0 Irresistible Coins." );
else if ( quantity > GetPlayerIrresistibleCoins( playerid ) ) return SendError( playerid, "You do not have this many Irresistible Coins." ); else if ( quantity > GetPlayerIrresistibleCoins( playerid ) ) SendError( playerid, "You do not have this many Irresistible Coins." );
else if ( ! ( 1000 <= price <= 125000 )) return SendError( playerid, "Selling price must be between $1,000 and $125,000 per coin." ); else if ( ! ( 1000 <= price <= 125000 )) SendError( playerid, "Selling price must be between $1,000 and $125,000 per coin." );
else else
{ {
new new
@ -86,27 +89,21 @@ CMD:sellcoins( playerid, params[ ] )
mysql_single_query( szBigString ); mysql_single_query( szBigString );
// deduct the coins // deduct the coins
SendServerMessage( playerid, "Sell order for %s Irresistible Coins (at %s/IC) has been placed. Cancel via /cancelorders.", number_format( quantity, .decimals = 3 ), cash_format( price ) ); SendServerMessage( playerid, "Sell order for %s Irresistible Coins (at %s/IC) has been placed. Cancel via "COL_GREY"/ic cancel"COL_WHITE".", number_format( quantity, .decimals = 3 ), cash_format( price ) );
GivePlayerIrresistibleCoins( playerid, -quantity ); GivePlayerIrresistibleCoins( playerid, -quantity );
} }
return 1; return Y_HOOKS_BREAK_RETURN_1;
} }
else if ( strmatch( params, "buy" ) )
CMD:buycoins( playerid, params[ ] ) {
{
if ( ! IsPlayerSecurityVerified( playerid ) )
return SendError( playerid, "You must be verified in order to use this feature. "COL_YELLOW"(use /verify)" );
ShowPlayerCoinSellOrders( playerid ); ShowPlayerCoinSellOrders( playerid );
return 1; return Y_HOOKS_BREAK_RETURN_1;
} }
else if ( strmatch( params, "cancel" ) )
CMD:cancelorders( playerid, params[ ] ) {
{
if ( ! IsPlayerSecurityVerified( playerid ) )
return SendError( playerid, "You must be verified in order to use this feature. "COL_YELLOW"(use /verify)" );
mysql_tquery( dbHandle, sprintf( "SELECT * FROM `IC_SELL_ORDERS` WHERE `USER_ID` = %d", GetPlayerAccountID( playerid ) ), "PlayerMarket_OnCancelOrders", "d", playerid ); mysql_tquery( dbHandle, sprintf( "SELECT * FROM `IC_SELL_ORDERS` WHERE `USER_ID` = %d", GetPlayerAccountID( playerid ) ), "PlayerMarket_OnCancelOrders", "d", playerid );
return Y_HOOKS_BREAK_RETURN_1;
}
return 1; return 1;
} }
@ -122,7 +119,7 @@ thread PlayerMarket_OnShowSellOrders( playerid )
seller[ 24 ]; seller[ 24 ];
// set headers // set headers
szHugeString = ""COL_GREY"Player\t"COL_GREY"Quantity Available\t"COL_GREY"Price Per Coin\n"; szHugeString = ""COL_GREY"Player\t"COL_GREY"Quantity Available (IC)\t"COL_GREY"Price Per Coin ($)\n";
for ( new row = 0; row < sizeof ( p_PlayerMarket_SellOrders[ ] ); row ++ ) for ( new row = 0; row < sizeof ( p_PlayerMarket_SellOrders[ ] ); row ++ )
{ {

View File

@ -6561,7 +6561,7 @@ CMD:irresistiblecoins( playerid, params[ ] )
if ( p_accountSecurityData[ playerid ] [ E_ID ] && ! p_accountSecurityData[ playerid ] [ E_VERIFIED ] && p_accountSecurityData[ playerid ] [ E_MODE ] != SECURITY_MODE_DISABLED ) if ( p_accountSecurityData[ playerid ] [ E_ID ] && ! p_accountSecurityData[ playerid ] [ E_VERIFIED ] && p_accountSecurityData[ playerid ] [ E_MODE ] != SECURITY_MODE_DISABLED )
return SendError( playerid, "You must be verified in order to use this feature. "COL_YELLOW"(use /verify)" ); return SendError( playerid, "You must be verified in order to use this feature. "COL_YELLOW"(use /verify)" );
if ( isnull( params ) ) if ( strmatch( params, "balance" ) )
{ {
return SendServerMessage( playerid, "You currently have precisely "COL_GOLD"%s"COL_WHITE" Irresistible Coins!", number_format( p_IrresistibleCoins[ playerid ] ) ); return SendServerMessage( playerid, "You currently have precisely "COL_GOLD"%s"COL_WHITE" Irresistible Coins!", number_format( p_IrresistibleCoins[ playerid ] ) );
} }
@ -6598,7 +6598,7 @@ CMD:irresistiblecoins( playerid, params[ ] )
} }
return 1; return 1;
} }
return SendUsage( playerid, "/irresistiblecoins [MARKET/SEND] "COL_GREY"(type /irresistiblecoins to see your coins)" ); return SendUsage( playerid, "/irresistiblecoins [BALANCE/BUY/SELL/MARKET/SEND/CANCEL]" );
} }
CMD:top( playerid, params[ ] ) return cmd_highscores( playerid, params ); CMD:top( playerid, params[ ] ) return cmd_highscores( playerid, params );
@ -7797,7 +7797,7 @@ CMD:mech( playerid, params[ ] )
p_DamageSpamCount{ playerid } = 0; p_DamageSpamCount{ playerid } = 0;
RepairVehicle( iVehicle ); RepairVehicle( iVehicle );
SendServerMessage( playerid, "You have repaired this vehicle." ); SendServerMessage( playerid, "You have repaired this vehicle." );
p_AntiMechFixSpam[ playerid ] = g_itime + 5; p_AntiMechFixSpam[ playerid ] = g_iTime + 5;
GivePlayerCash( playerid, -cost ); GivePlayerCash( playerid, -cost );
} }
else if ( strmatch( params, "nos" ) ) else if ( strmatch( params, "nos" ) )
@ -8235,7 +8235,7 @@ thread OnPlayerWeeklyTime( playerid, irc, player[ ] )
CMD:xpmarket( playerid, params[ ] ) CMD:xpmarket( playerid, params[ ] )
{ {
ShowPlayerDialog( playerid, DIALOG_XPMARKET, DIALOG_STYLE_INPUT, "{FFFFFF}XP Market", sprintf( ""COL_WHITE"You have %d legacy XP. Current exchange rate is $10 per XP.\n\nHow many would you like to exchange?", p_XP[ playerid ] ), "Select", "Cancel"); ShowPlayerDialog( playerid, DIALOG_XPMARKET, DIALOG_STYLE_INPUT, "{FFFFFF}XP Market", sprintf( ""COL_WHITE"You have %s legacy XP. Current exchange rate is $10 per XP.\n\nHow many would you like to exchange?", number_format( p_XP[ playerid ] ) ), "Select", "Cancel");
return 1; return 1;
} }
@ -8381,7 +8381,7 @@ CMD:label( playerid, params[ ] )
szLabel[ 32 ] szLabel[ 32 ]
; ;
if ( p_XP[ playerid ] < 3500 ) return SendError( playerid, "You need 3,500 XP to use this command." ); if ( GetPlayerScore( playerid ) < 500 ) return SendError( playerid, "You need 500 score to use this command." );
else if ( sscanf( params, "s[32]", szLabel ) ) return SendUsage( playerid, "/label [MESSAGE]" ); else if ( sscanf( params, "s[32]", szLabel ) ) return SendUsage( playerid, "/label [MESSAGE]" );
else else
{ {
@ -12043,21 +12043,24 @@ stock approveClassSpawned( playerid ) {
if ( p_WantedLevel[ playerid ] > 0 && ( IsPlayerPolice( playerid ) || IsPlayerFBI( playerid ) || IsPlayerCIA( playerid ) || GetPlayerSkin( playerid ) == 287 ) ) if ( p_WantedLevel[ playerid ] > 0 && ( IsPlayerPolice( playerid ) || IsPlayerFBI( playerid ) || IsPlayerCIA( playerid ) || GetPlayerSkin( playerid ) == 287 ) )
return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You must not have a wanted level to use this class." ), 0; return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You must not have a wanted level to use this class." ), 0;
// get player total experience
new Float: total_experience = GetPlayerTotalExperience( playerid );
// bought xp // bought xp
if ( IsPlayerFBI( playerid ) && p_XP[ playerid ] < 10000 ) if ( IsPlayerFBI( playerid ) && total_experience < 10000.0 )
return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 10,000 XP to use this class." ), 0; return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 10,000 Total XP to use this class." ), 0;
if ( IsPlayerArmy( playerid ) && p_XP[ playerid ] < 20000 ) if ( IsPlayerArmy( playerid ) && total_experience < 20000.0 )
return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 20,000 XP to use this class." ), 0; return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 20,000 Total XP to use this class." ), 0;
if ( IsPlayerCIA( playerid ) && p_XP[ playerid ] < 15000 ) if ( IsPlayerCIA( playerid ) && total_experience < 15000.0 )
return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 15,000 XP to use this class." ), 0; return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 15,000 Total XP to use this class." ), 0;
if ( IsPlayerFireman( playerid ) && p_XP[ playerid ] < 1000 ) if ( IsPlayerFireman( playerid ) && total_experience < 1000.0 )
return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 1,000 XP to use this class." ), 0; return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 1,000 Total XP to use this class." ), 0;
if ( IsPlayerMedic( playerid ) && p_XP[ playerid ] < 2000 ) if ( IsPlayerMedic( playerid ) && total_experience < 2000.0 )
return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 2,000 XP to use this class." ), 0; return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 2,000 Total XP to use this class." ), 0;
// job not set // job not set
if ( !p_JobSet{ playerid } ) // || !p_CitySet{ playerid } ) if ( !p_JobSet{ playerid } ) // || !p_CitySet{ playerid } )
@ -14197,7 +14200,7 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
); );
return 1; return 1;
} }
if ( ( dialogid == DIALOG_PERKS ) && response ) /*if ( ( dialogid == DIALOG_PERKS ) && response )
{ {
switch( listitem ) switch( listitem )
{ {
@ -14293,7 +14296,7 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
else return SendError( playerid, "You don't have enough XP for this." ); else return SendError( playerid, "You don't have enough XP for this." );
} }
} }
} }*/
if ( dialogid == DIALOG_CASINO_REWARDS && response ) if ( dialogid == DIALOG_CASINO_REWARDS && response )
{ {
if ( IsPlayerJailed( playerid ) ) return SendError( playerid, "You cannot use this while you're in jail." ); if ( IsPlayerJailed( playerid ) ) return SendError( playerid, "You cannot use this while you're in jail." );