Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <fvault>
- #define PLUGIN "Jailbreak Jackpot"
- #define VERSION "0.2"
- #define AUTHOR "eldadz"
- native jb_set_user_cash( client, amount )
- native jb_get_user_cash( client )
- #define PREFIX "AMXX"
- enum _:enumCvar
- {
- CVAR_DEPOSIT,
- CVAR_PLAYERSMIN,
- CVAR_CASHMIN,
- CVAR_CASHMAX,
- CVAR_SNIPER,
- CVAR_SNIPERNUMBER,
- }
- enum _:enumJackpot
- {
- JACKPOT_NAME[ 33 ],
- JACKPOT_STEAM[ 35 ],
- JACKPOT_CASHJACKPOT,
- //JACKPOT_CASH
- }
- new g_aCvar[ enumCvar ];
- new g_arrayPlayer[ 33 ][ enumJackpot ];
- new Array:g_aJackpot, Trie:g_trieJackpot, g_intTotal;
- new Float:g_fJackpotTimer;
- new const g_szJackpot[] = "jackpot_vault_v2";
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- g_aCvar[ CVAR_DEPOSIT ] = register_cvar( "jp_deposit_min", "1000" );
- g_aCvar[ CVAR_PLAYERSMIN ] = register_cvar( "jp_players_min", "2" );
- g_aCvar[ CVAR_CASHMIN ] = register_cvar( "jp_cash_min", "50000" );
- g_aCvar[ CVAR_CASHMAX ] = register_cvar( "jp_cash_max", "100000" );
- g_aCvar[ CVAR_SNIPER ] = register_cvar( "jp_sniper", "0" );
- g_aCvar[ CVAR_SNIPERNUMBER ] = register_cvar( "jp_sniper_per", "1.5" );
- register_clcmd("say /jackpot", "CmdMainJackpot");
- register_clcmd("jackpot_amuont", "CmdDeposit");
- g_aJackpot = ArrayCreate( enumJackpot );
- g_trieJackpot = TrieCreate();
- CmdSetupJackpot();
- }
- public plugin_cfg( )
- {
- g_fJackpotTimer = float( GetTime() )
- set_task( g_fJackpotTimer, "CmdActiveJackpot" )
- }
- public client_authorized( iClient )
- {
- //LoadCash( iClient );
- LoadUser( iClient );
- }
- public client_disconnect( iClient )
- {
- //SaveCash( iClient );
- SaveUser( iClient );
- }
- public CmdActiveJackpot()
- {
- g_fJackpotTimer = float( GetTime() )
- set_task( g_fJackpotTimer, "CmdActiveJackpot" )
- static data[ enumJackpot ];
- new bool:boolJackpot = CmdJacpotReady();
- if( boolJackpot )
- {
- new intWinner = CmdGetWinner();
- new intJackpot = CmdGetJackpotCash();
- ArrayGetArray( g_aJackpot, intWinner, data );
- client_print( 0, print_chat, "[ %s ] the winner is %s, he won %i$ cash %.2f%% chance.", PREFIX, data[ JACKPOT_STEAM ], intJackpot, 100 * ( float( data[ JACKPOT_CASHJACKPOT ] ) / float( intJackpot ) ));
- if( CmdisUserOnline( data[ JACKPOT_STEAM ]) != -1 )
- {
- new intId = CmdisUserOnline( data[ JACKPOT_STEAM ] );
- g_arrayPlayer[ intId ][ JACKPOT_CASHJACKPOT ] += intJackpot;
- SaveUser( intId );
- }
- else
- {
- new strData[ 16 ];
- new intCash = ( data[ JACKPOT_CASHJACKPOT ] + intJackpot );
- formatex( strData, charsmax( strData ), "%i", intCash);
- fvault_set_data( g_szJackpot, data[ JACKPOT_STEAM ], strData );
- }
- CmdResetJackpot();
- }
- }
- public CmdResetJackpot()
- {
- for( new i = 0; i < get_maxplayers(); i++ )
- g_arrayPlayer[ i ][ JACKPOT_CASHJACKPOT ] = 0;
- g_intTotal = 0;
- fvault_clear( g_szJackpot );
- ArrayClear( g_aJackpot );
- TrieClear( g_trieJackpot );
- }
- /*
- public LoadCash( iClient )
- {
- new strData[ 16 ], iNum[ 10 ];
- if( fvault_get_data( g_szJackpot, GetUserAuthid( iClient ), strData, sizeof( strData ) - 1) )
- {
- g_arrayPlayer[ iClient ][ JACKPOT_CASH ] = 0;
- SaveUser( iClient );
- }
- else
- {
- parse( strData, iNum, charsmax( iNum ) );
- g_arrayPlayer[ iClient ][ JACKPOT_CASH ] = str_to_num( iNum );
- }
- }
- public SaveCash( iClient )
- {
- new strData[ 16 ];
- formatex( strData, charsmax( strData ), "%i", g_arrayPlayer[ iClient ][ JACKPOT_CASH ] );
- fvault_set_data( g_szJackpot, g_arrayPlayer[ iClient ][ JACKPOT_STEAM ], strData );
- }*/
- public LoadUser( iClient )
- {
- new strData[ 256 ], iNum[ 10 ];
- if( !fvault_get_data( g_szJackpot, GetUserAuthid( iClient ), strData, sizeof( strData ) - 1) )
- {
- copy( g_arrayPlayer[ iClient ][ JACKPOT_NAME ], charsmax( g_arrayPlayer[][ JACKPOT_NAME ] ), GetUserName( iClient ));
- copy( g_arrayPlayer[ iClient ][ JACKPOT_STEAM ], charsmax( g_arrayPlayer[][ JACKPOT_STEAM ] ), GetUserAuthid( iClient ));
- g_arrayPlayer[ iClient ][ JACKPOT_CASHJACKPOT ] = 0;
- SaveUser( iClient );
- }
- else
- {
- copy( g_arrayPlayer[ iClient ][ JACKPOT_NAME ], charsmax( g_arrayPlayer[][ JACKPOT_NAME ] ), GetUserName( iClient ));
- strbreak( strData, iNum, sizeof( iNum ), strData, sizeof( strData ) );
- g_arrayPlayer[ iClient ][ JACKPOT_CASHJACKPOT ] = str_to_num( iNum );
- copy( g_arrayPlayer[ iClient ][ JACKPOT_STEAM ], charsmax( g_arrayPlayer[][ JACKPOT_STEAM ] ), GetUserAuthid( iClient ));
- }
- }
- public SaveUser( iClient )
- {
- new intLen, strTemp[128];
- format(strTemp[ intLen ], 127, "%i^" ^"%s", g_arrayPlayer[ iClient ][ JACKPOT_CASHJACKPOT ], g_arrayPlayer[ iClient ][ JACKPOT_NAME ]);
- fvault_set_data( g_szJackpot, g_arrayPlayer[ iClient ][ JACKPOT_STEAM ], strTemp );
- }
- public CmdSetupJackpot()
- {
- static data[ enumJackpot ];
- new intTotal = fvault_size( g_szJackpot )
- new strData[ 256 ], intCashJackpot[ 16 ];
- for( new i = 0; i < intTotal; i++ )
- {
- fvault_get_keyname( g_szJackpot , i, data[ JACKPOT_STEAM ], sizeof( data[ JACKPOT_STEAM ] ) - 1);
- fvault_get_data( g_szJackpot , data[ JACKPOT_STEAM ], strData, sizeof( strData ) - 1);
- parse( strData, intCashJackpot, charsmax( intCashJackpot ), data[ JACKPOT_NAME ], charsmax( data[ JACKPOT_NAME ] ));
- data[ JACKPOT_CASHJACKPOT ] += str_to_num( intCashJackpot );
- if( data[ JACKPOT_CASHJACKPOT ] < 1000 )
- continue;
- ArrayPushArray( g_aJackpot, data );
- TrieSetCell( g_trieJackpot, data[ JACKPOT_STEAM ], g_intTotal );
- g_intTotal++;
- }
- }
- public CmdDeposit( id )
- {
- static data[ enumJackpot ];
- new strArgs[ 16 ];
- read_argv( id, strArgs, charsmax( strArgs ) );
- if( !strlen( strArgs ) || !is_str_num( strArgs ) )
- {
- client_print( id, print_chat, "[ %s ] you have to enter a vaild number", PREFIX);
- CmdMainJackpot( id )
- return PLUGIN_HANDLED;
- }
- new intDeposit = str_to_num( strArgs );
- new intMin = get_pcvar_num( g_aCvar[ CVAR_DEPOSIT ] );
- new intMax = get_pcvar_num( g_aCvar[ CVAR_CASHMAX ] );
- new intSniper = get_pcvar_num( g_aCvar[ CVAR_SNIPER ] )
- if( intDeposit < intMin )
- {
- client_print( id, print_chat, "[ %s ] you have to enter atleast more %i cash", PREFIX, intMin - intDeposit);
- CmdMainJackpot( id );
- return PLUGIN_HANDLED;
- }
- if( jb_get_user_cash( id ) < intDeposit )
- {
- client_print( id, print_chat, "[ %s ] you dont own this kind of cash.", PREFIX);
- CmdMainJackpot( id );
- return PLUGIN_HANDLED;
- }
- if( intSniper == 1 &&
- intDeposit > ( CmdGetJackpotCash() * get_pcvar_float( g_aCvar[ CVAR_SNIPERNUMBER ] ) ) &&
- CmdGetJackpotCash() >= get_pcvar_num( g_aCvar[ CVAR_CASHMIN ] ) )
- {
- client_print( id, print_chat, "[ %s ] Sorry snipers not allowed, lower the bet or wait for next round.", PREFIX);
- CmdMainJackpot( id );
- return PLUGIN_HANDLED;
- }
- g_arrayPlayer[ id ][ JACKPOT_CASHJACKPOT ] += intDeposit;
- SaveUser( id );
- if( TrieKeyExists( g_trieJackpot, g_arrayPlayer[ id ][ JACKPOT_STEAM ] ) )
- {
- new intKey
- TrieGetCell( g_trieJackpot, g_arrayPlayer[ id ][ JACKPOT_STEAM ], intKey );
- ArrayGetArray( g_aJackpot, intKey, data );
- data[ JACKPOT_CASHJACKPOT ] += intDeposit;
- ArraySetArray( g_aJackpot, intKey, data );
- }
- else
- {
- copy( data[ JACKPOT_STEAM ], charsmax( data[ JACKPOT_STEAM ] ), GetUserAuthid( id ) );
- copy( data[ JACKPOT_NAME ], charsmax( data[ JACKPOT_NAME ] ), GetUserName( id ) );
- data[ JACKPOT_CASHJACKPOT ] = intDeposit;
- ArrayPushArray( g_aJackpot, data );
- TrieSetCell( g_trieJackpot, data[ JACKPOT_STEAM ], g_intTotal );
- g_intTotal++
- }
- if( CmdGetJackpotCash() > intMax )
- {
- CmdActiveJackpot();
- }
- CmdMainJackpot( id );
- return PLUGIN_CONTINUE;
- }
- public CmdMainJackpot( id )
- {
- new strTemp[ 256 ], intLen;
- new intJackpot = CmdGetJackpotCash();
- intLen = format( strTemp[ intLen ], sizeof( strTemp ) - 1, "\r[\w %s \r]\y Jackpot\w Main Menu^n", PREFIX);
- intLen += format( strTemp[ intLen ], sizeof( strTemp ) - 1 - intLen, "\d*Note: jackpot starts every perfect hour, or when the pool is reach over %i^n^n", get_pcvar_num( g_aCvar[ CVAR_CASHMAX ] ));
- intLen += format( strTemp[ intLen ], sizeof( strTemp ) - 1 - intLen, "\yJackpot\w Starts in: \y%s^n", CmdGetJackpotTime());
- intLen += format( strTemp[ intLen ], sizeof( strTemp ) - 1 - intLen, "\yJackpot\w Cash: \d%i\r$^n^n", intJackpot);
- intLen += format( strTemp[ intLen ], sizeof( strTemp ) - 1 - intLen, "\wYour deposited \d%i\r$\w, and your \ychances\w to win are\r %.2f%%", g_arrayPlayer[ id ][ JACKPOT_CASHJACKPOT ], 100 * ( float( g_arrayPlayer[ id ][ JACKPOT_CASHJACKPOT ] ) / float( intJackpot ) ));
- new iMenu = menu_create(strTemp , "CmdHandlerMain");
- menu_additem( iMenu, "Deposit Cash", "1");
- menu_additem( iMenu, "View Jackpot Players", "2");
- menu_display( id, iMenu );
- }
- public CmdHandlerMain( id, iMenu, iKey )
- {
- if( iKey == MENU_EXIT )
- {
- menu_destroy( iMenu );
- }
- else
- {
- new intKey = MenuKey( iMenu, iKey );
- switch( intKey )
- {
- case 1: client_cmd(id, "messagemode jackpot_amuont")
- case 2: CmdMenuPlayers( id );
- }
- }
- }
- public CmdMenuPlayers( id )
- {
- static data[ enumJackpot ];
- new strTemp[ 128 ], intFound;
- new intJackpot = CmdGetJackpotCash();
- formatex( strTemp, charsmax( strTemp ), "\r[\w %s \r]\w Jackpot Menu^nViewing all players in the \yjackpot\w poll:", PREFIX);
- new iMenu = menu_create( strTemp, "CmdHandlerPlayers");
- for( new i = 0; i < g_intTotal; i++ )
- {
- ArrayGetArray( g_aJackpot, i, data )
- formatex( strTemp, charsmax( strTemp ), "%s \d%i\r$ \y(%.2f%%)", data[ JACKPOT_NAME ], data[ JACKPOT_CASHJACKPOT ], 100 * ( float( data[ JACKPOT_CASHJACKPOT ] ) / float( intJackpot ) ));
- menu_additem( iMenu, strTemp );
- intFound++;
- }
- if( !intFound )
- {
- menu_additem( iMenu, "\rNo Players");
- }
- menu_display( id, iMenu );
- }
- public CmdHandlerPlayers( id, iMenu, iKey )
- {
- if( iKey == MENU_EXIT )
- {
- menu_destroy( iMenu );
- CmdMainJackpot( id );
- }
- else
- {
- CmdMenuPlayers( id );
- }
- }
- stock bool:CmdJacpotReady()
- {
- if( CmdGetJackpotCash() < get_pcvar_num( g_aCvar[ CVAR_CASHMIN ] ) )
- {
- client_print( 0, print_chat, "[ %s ] Jackpot will be dealyed. since the pot didnt reach the minumum deposit( %i$ ).", PREFIX, get_pcvar_num( g_aCvar[ CVAR_CASHMIN ] ));
- return false;
- }
- if( g_intTotal < get_pcvar_num( g_aCvar[ CVAR_PLAYERSMIN ] ) )
- {
- client_print( 0, print_chat, "[ %s ] Jackpot will be dealyed. since no players deposited.", PREFIX);
- return false;
- }
- return true;
- }
- stock CmdGetWinner()
- {
- static data[ enumJackpot ];
- new intCash , intRandom;
- intCash = CmdGetJackpotCash();
- intRandom = random_num( 1, intCash );
- new intCurrect , intPrevious, intWinner;
- for( new i = 0; i < g_intTotal; i++ )
- {
- ArrayGetArray( g_aJackpot, i, data );
- intCurrect = intPrevious + data[ JACKPOT_CASHJACKPOT ];
- if( intPrevious < intRandom && intRandom <= intCurrect )
- {
- intWinner = i;
- break;
- }
- intPrevious += data[ JACKPOT_CASHJACKPOT ];
- }
- return intWinner;
- }
- stock CmdisUserOnline( strSteam[] )
- {
- for( new i = 0; i < get_maxplayers(); i++ )
- {
- if( equali( strSteam, GetUserAuthid( i ) ) )
- {
- return i;
- }
- }
- return -1;
- }
- stock CmdGetJackpotTime()
- {
- new strDate[ 64 ];
- new iHour, iMinute, iSecond;
- time( iHour, iMinute, iSecond )
- new intCheckT = iMinute;
- intCheckT = 60 - ( ( intCheckT > 0 ) ? ( iMinute + 1) : iMinute );
- formatex( strDate, charsmax( strDate ), "%i:%i", intCheckT, ( 60 - iSecond ));
- return strDate;
- }
- stock GetTime()
- {
- new iHour, iMinute, iSecond;
- time( iHour, iMinute, iSecond )
- new intCheckT = iMinute;
- intCheckT = 60 - ( ( intCheckT > 0 ) ? ( iMinute + 1) : iMinute );
- return ( ( intCheckT ) * 60 ) + ( 60 - iSecond );
- }
- stock CmdGetJackpotCash()
- {
- static data[ enumJackpot ];
- new intCash = 0;
- for( new i = 0; i < g_intTotal; i++ )
- {
- ArrayGetArray( g_aJackpot, i, data );
- intCash += data[ JACKPOT_CASHJACKPOT ];
- }
- return intCash;
- }
- stock GetUserName( const index )
- {
- static strName[ 33 ];
- get_user_name( index, strName, charsmax( strName ) );
- return strName;
- }
- stock MenuKey(menu, item)
- {
- new szData[6], szName[64];
- new access, callback;
- menu_item_getinfo(menu, item, access, szData, charsmax(szData), szName, charsmax(szName), callback);
- menu_destroy(menu)
- return str_to_num(szData);
- }
- stock GetUserAuthid( const index )
- {
- static strAuthid[ 35 ];
- get_user_authid( index, strAuthid, charsmax( strAuthid ) );
- return strAuthid;
- }
Add Comment
Please, Sign In to add comment