Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LotteryWon <- false;
- TicketsPurchased <- {};
- usedTickets <- [];
- LotteryCount <- 0;
- LotteryPrize <- 0;
- function onScriptLoad()
- {
- Lottery <- array( GetMaxPlayers(), false );
- Tickets <- array( 60, false );
- }
- function onPlayerJoin( player )
- {
- Lottery[ player.ID ] = false;
- TicketsPurchased.rawset( player.ID, 0 );
- }
- function onPlayerPart( player, reason )
- {
- if ( Lottery[ player.ID ] == true ) // If the player bought ticket...
- {
- local a = TicketsPurchased.rawget( player.ID );
- Tickets[a] = false;
- TicketsPurchased.rawdelete( player.ID ); // Delete player ticket...
- LotteryCount >= 1 ? LotteryCount -- : ( LotteryCount --, _Lottery.Delete(), EndLottery() ); // decrease participants...
- }
- }
- function onPlayerCommand( player, cmd, text )
- {
- if ( cmd == "lotto" )
- {
- if ( !text ) MessagePlayer( "Error - Syntax: /lotto <number betwen 1 and 60>", player);
- else if ( !IsNum( text ) ) MessagePlayer( "Use numbers", player );
- else
- {
- if ( Lottery[ player.ID ] == true ) MessagePlayer( "Wait for the result. You already have ticket", player );
- else
- {
- if ( Tickets[text.tointeger()] == true ) MessagePlayer( "ticket already bought", player );
- else if ( ( text.tointeger() > 0 ) && ( text.tointeger() < 61 ) )
- {
- if ( player.Cash >= 1000 )
- {
- if ( !LotteryCount )
- {
- Message( "lottery started." );
- _Lottery <- NewTimer( "StartLottery", 2000, 1 );
- }
- player.Cash -= 1000;
- Lottery[ player.ID ] = true;
- Tickets[text.tointeger()] = true;
- usedTickets.push( text.tointeger() );
- LotteryCount ++;
- local value = ( ( rand() % ( 80000 - 50000 ) ) + 50000 );
- LotteryPrize = value.tointeger();
- TicketsPurchased.rawset( player.ID, text.tointeger() ); // Set ticket ID for player...
- MessagePlayer( "You have paid $1000 for ticket", player );
- }
- else MessagePlayer( "You need $1000 to buy ticket", player );
- }
- else
- {
- MessagePlayer( "You need $1000 to buy ticket.", player );
- MessagePlayer("Select number betwen 1 and 60", player );
- }
- }
- }
- }
- else if ( cmd == "lotstats" )
- {
- local a;
- for ( local i = 0; i <= GetMaxPlayers(); i ++ )
- {
- local player = FindPlayer( i );
- if ( player )
- {
- local t = TicketsPurchased.rawget( player.ID );
- if ( a ) a = a + ", " + player.Name + "(" + t + ")";
- else a = player.Name + "(" + t + ")";
- }
- }
- if ( a ) Message( "Tickets: " + a );
- else Message( "No tickets" );
- }
- else if(cmd == "exec")
- {
- if( !text ) MessagePlayer( "Error - Syntax: /exec <Squirrel code>", player);
- else
- {
- try
- {
- local script = compilestring( text );
- script();
- }
- catch(e) MessagePlayer( "Error: " + e, player);
- }
- }
- }
- function StartLottery()
- {
- if ( LotteryCount >= 3 ) // Lottery starts from three tickets purchased. You chose this...
- {
- local ticket = raffle();
- for ( local i = 0; i <= GetMaxPlayers(); i ++ )
- {
- local player = FindPlayer( i );
- if ( player )
- {
- if ( Lottery[ player.ID ] == true )
- {
- if ( TicketsPurchased.rawget( player.ID ) == ticket )
- {
- LotteryWon = true;
- Message( "Lottery: The winner is..." );
- Message( "Lottery: " + player.Name + ". ( ticket " + TicketsPurchased.rawget( player.ID ) + " )" );
- player.Cash += LotteryPrize;
- }
- }
- }
- }
- LotteryWon ? ( Message( "Closed lottery." ), EndLottery() ) : Message( "Lottery: No winners this time, the prize is now " + LotteryPrize );
- }
- else
- {
- Message( "Lottery delayed for lack of tickets." );
- _Lottery <- NewTimer( "StartLottery", 60000, 1 );
- }
- }
- function EndLottery()
- {
- for ( local i = 0; i <= GetMaxPlayers(); i ++ )
- {
- local player = FindPlayer( i );
- if ( player )
- {
- if ( Lottery[ player.ID ] == true )
- {
- TicketsPurchased.rawset( player.ID, 0 );
- Lottery[ player.ID ] = false;
- LotteryWon = false;
- LotteryCount = 0;
- }
- }
- }
- for ( local i = 1; i < 60; i ++ )
- {
- Tickets[i] = false;
- usedTickets.clear();
- }
- }
- function raffle()
- {
- local rand = rand() % usedTickets.len();
- return usedTickets[rand];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement