2018-12-22 23:58:03 +00:00
/*
* Irresistible Gaming (c) 2018
* Developed by Lorenc
* Module: cnr\vip\happy_hour.pwn
* Purpose: coin generation ("proof of playing") mechanism
*/
/* ** Includes ** */
#include < YSI\y_hooks >
/* ** Error Checking ** */
#if !defined __cnr__irresistiblecoins
#endinput
#endif
2019-02-23 08:22:36 +00:00
/* ** Configuration ** */
2019-02-23 08:26:05 +00:00
#define DISABLE_HAPPY_HOUR // UNCOMMENT TO ENABLE FEATURE
2019-02-23 08:22:36 +00:00
2018-12-22 23:58:03 +00:00
/* ** Variables ** */
2019-02-23 08:22:36 +00:00
#if !defined DISABLE_HAPPY_HOUR
static stock
bool: g_HappyHour = false,
Float: g_HappyHourRate = 0.0,
Text: g_NotManyPlayersTD = Text: INVALID_TEXT_DRAW
;
#endif
2018-12-22 23:58:03 +00:00
/* ** Hooks ** */
2019-02-23 08:22:36 +00:00
#if !defined DISABLE_HAPPY_HOUR
hook OnScriptInit( )
{
g_NotManyPlayersTD = TextDrawCreate(322.000000, 12.000000, "Coin generation increased by 5x as there aren't many players online!");
TextDrawAlignment(g_NotManyPlayersTD, 2);
TextDrawBackgroundColor(g_NotManyPlayersTD, 0);
TextDrawFont(g_NotManyPlayersTD, 1);
TextDrawLetterSize(g_NotManyPlayersTD, 0.149999, 0.799999);
TextDrawColor(g_NotManyPlayersTD, -16776961);
TextDrawSetOutline(g_NotManyPlayersTD, 1);
TextDrawSetProportional(g_NotManyPlayersTD, 1);
return 1;
}
hook OnServerUpdate( )
{
new Float: fLastRate;
new playersOnline = Iter_Count(Player);
// Happy Hour
if ( ( g_HappyHour = playersOnline <= 20 ) == true ) {
// Maximum of 25% decrease
g_HappyHourRate = 0.25 - ( playersOnline / 80.0 );
// Only update colors if neccessary
if ( fLastRate != g_HappyHourRate )
{
TextDrawSetString( g_NotManyPlayersTD, sprintf( "Coin generation increased by %0.1f%% as there aren't many players online!", g_HappyHourRate * 100.0 ) );
TextDrawColor( g_NotManyPlayersTD, setAlpha( COLOR_RED, floatround( 200.0 - 10.0 * float( playersOnline ) ) ) );
TextDrawShowForAllSpawned( g_NotManyPlayersTD );
}
// Update last rate
fLastRate = g_HappyHourRate;
} else {
// Disable Color
g_HappyHourRate = 0.0;
TextDrawColor( g_NotManyPlayersTD, 0 );
TextDrawHideForAll( g_NotManyPlayersTD );
2018-12-22 23:58:03 +00:00
}
2019-02-23 08:22:36 +00:00
return 1;
}
2018-12-22 23:58:03 +00:00
2019-02-23 08:22:36 +00:00
hook OnPlayerLoadTextdraws( playerid ){
if ( g_HappyHour ) {
TextDrawShowForPlayer( playerid, g_NotManyPlayersTD );
}
return 1;
2018-12-22 23:58:03 +00:00
}
2019-02-23 08:22:36 +00:00
hook OnPlayerUnloadTextdraws( playerid ) {
TextDrawHideForPlayer( playerid, g_NotManyPlayersTD );
return 1;
}
#endif
2018-12-22 23:58:03 +00:00
hook OnPlayerTickSecond( playerid )
{
static
iKeys, iUpDownKeys, iLeftRightKeys;
2023-12-28 23:47:25 +00:00
// Increase Coins (1/20 = cred/min)
2019-01-25 04:39:34 +00:00
if ( ! IsPlayerAFK( playerid ) && GetPlayerKeys( playerid, iKeys, iUpDownKeys, iLeftRightKeys ) && ! IsPlayerOnRoulette( playerid ) && ! IsPlayerOnSlotMachine( playerid ) && GetPlayerVehicleSeat( playerid ) <= 0 && !IsPlayerUsingAnimation( playerid ) )
2018-12-22 23:58:03 +00:00
{
if ( iKeys != 0 || iUpDownKeys != 0 || iLeftRightKeys != 0 ) { // GetPlayerScore( playerid ) > 10 &&
new
Float: iCoinGenRate = 35.0;
// VIP check
if ( p_VIPLevel[ playerid ] >= VIP_DIAMOND )
iCoinGenRate *= 0.75; // Reduce by 25% if Diamond
else if ( p_VIPLevel[ playerid ] == VIP_PLATINUM )
iCoinGenRate *= 0.90; // Reduce by 10% if Diamond
2019-02-23 08:22:36 +00:00
#if !defined DISABLE_HAPPY_HOUR
2018-12-22 23:58:03 +00:00
// Happy Hour
if ( g_HappyHour && ( 0.0 <= g_HappyHourRate <= 0.25 ) )
iCoinGenRate *= 1.0 - g_HappyHourRate;
2019-02-23 08:22:36 +00:00
#endif
2018-12-22 23:58:03 +00:00
2019-01-01 13:19:17 +00:00
GivePlayerIrresistibleCoins( playerid, ( 1.0 / iCoinGenRate ) / 60.0 ); // Prev 25.92
2018-12-22 23:58:03 +00:00
}
}
return 1;
2019-01-01 15:37:45 +00:00
}