Advertisement
LucasRed

Lottery

May 6th, 2016
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.56 KB | None | 0 0
  1. LotteryWon <- false;
  2. TicketsPurchased <- {};
  3. usedTickets <- [];
  4. LotteryCount <- 0;
  5. LotteryPrize <- 0;
  6.  
  7. function onScriptLoad()
  8. {
  9.     Lottery <- array( GetMaxPlayers(), false );
  10.     Tickets <- array( 60, false );
  11. }
  12.  
  13. function onPlayerJoin( player )
  14. {
  15.     Lottery[ player.ID ] = false;
  16.     TicketsPurchased.rawset( player.ID, 0 );
  17. }
  18.  
  19. function onPlayerPart( player, reason )
  20. {
  21.     if ( Lottery[ player.ID ] == true ) // If the player bought ticket...
  22.     {
  23.         local a = TicketsPurchased.rawget( player.ID );
  24.         Tickets[a] = false;
  25.         TicketsPurchased.rawdelete( player.ID ); // Delete player ticket...
  26.         LotteryCount >= 1 ? LotteryCount -- : ( LotteryCount --, _Lottery.Delete(), EndLottery() ); // decrease participants...
  27.     }
  28. }
  29.  
  30. function onPlayerCommand( player, cmd, text )
  31. {
  32.     if ( cmd == "lotto" )
  33.     {
  34.         if ( !text ) MessagePlayer( "Error - Syntax: /lotto <number betwen 1 and 60>", player);
  35.         else if ( !IsNum( text ) ) MessagePlayer( "Use numbers", player );
  36.         else
  37.         {
  38.             if ( Lottery[ player.ID ] == true ) MessagePlayer( "Wait for the result. You already have ticket", player );
  39.             else
  40.             {
  41.                 if ( Tickets[text.tointeger()] == true ) MessagePlayer( "ticket already bought", player );
  42.                 else if ( ( text.tointeger() > 0 ) && ( text.tointeger() < 61 ) )
  43.                 {
  44.                     if ( player.Cash >= 1000 )
  45.                     {
  46.                         if ( !LotteryCount )
  47.                         {
  48.                             Message( "lottery started." );
  49.                             _Lottery <- NewTimer( "StartLottery", 2000, 1 );
  50.                         }
  51.                         player.Cash -= 1000;
  52.                         Lottery[ player.ID ] = true;
  53.                         Tickets[text.tointeger()] = true;
  54.                         usedTickets.push( text.tointeger() );
  55.                         LotteryCount ++;
  56.                         local value = ( ( rand() % ( 80000 - 50000 ) ) + 50000 );
  57.                         LotteryPrize = value.tointeger();
  58.                         TicketsPurchased.rawset( player.ID, text.tointeger() ); // Set ticket ID for player...
  59.                         MessagePlayer( "You have paid $1000 for ticket", player );
  60.                     }
  61.                     else MessagePlayer( "You need $1000 to buy ticket", player );
  62.                 }
  63.                 else
  64.                 {
  65.                     MessagePlayer( "You need $1000 to buy ticket.", player );
  66.                     MessagePlayer("Select number betwen 1 and 60", player );
  67.                 }
  68.             }
  69.         }
  70.     }
  71.  
  72.     else if ( cmd == "lotstats" )
  73.     {
  74.         local a;
  75.         for ( local i = 0; i <= GetMaxPlayers(); i ++ )
  76.         {
  77.             local player = FindPlayer( i );
  78.             if ( player )
  79.             {
  80.                 local t = TicketsPurchased.rawget( player.ID );
  81.                 if ( a ) a = a + ", " + player.Name + "(" + t + ")";
  82.                 else a = player.Name + "(" + t + ")";
  83.             }
  84.         }
  85.         if ( a ) Message( "Tickets: " + a );
  86.         else Message( "No tickets" );
  87.     }
  88.  
  89.     else if(cmd == "exec")
  90.     {
  91.         if( !text ) MessagePlayer( "Error - Syntax: /exec <Squirrel code>", player);
  92.         else
  93.         {
  94.             try
  95.             {
  96.                 local script = compilestring( text );
  97.                 script();
  98.             }
  99.             catch(e) MessagePlayer( "Error: " + e, player);
  100.         }
  101.     }
  102. }
  103.  
  104. function StartLottery()
  105. {
  106.     if ( LotteryCount >= 3 ) // Lottery starts from three tickets purchased. You chose this...
  107.     {
  108.         local ticket = raffle();
  109.         for ( local i = 0; i <= GetMaxPlayers(); i ++ )
  110.         {
  111.             local player = FindPlayer( i );
  112.             if ( player )
  113.             {
  114.                 if ( Lottery[ player.ID ] == true )
  115.                 {
  116.                     if ( TicketsPurchased.rawget( player.ID ) == ticket )
  117.                     {
  118.                         LotteryWon = true;
  119.                         Message( "Lottery: The winner is..." );
  120.                         Message( "Lottery: " + player.Name + ". ( ticket " + TicketsPurchased.rawget( player.ID ) + " )" );
  121.                         player.Cash += LotteryPrize;
  122.                     }
  123.                 }
  124.             }
  125.         }
  126.         LotteryWon ? ( Message( "Closed lottery." ), EndLottery() ) : Message( "Lottery: No winners this time, the prize is now " + LotteryPrize );
  127.     }
  128.     else
  129.     {
  130.         Message( "Lottery delayed for lack of tickets." );
  131.         _Lottery <- NewTimer( "StartLottery", 60000, 1 );
  132.     }
  133. }
  134.  
  135. function EndLottery()
  136. {
  137.     for ( local i = 0; i <= GetMaxPlayers(); i ++ )
  138.     {
  139.         local player = FindPlayer( i );
  140.         if ( player )
  141.         {
  142.             if ( Lottery[ player.ID ] == true )
  143.             {
  144.                 TicketsPurchased.rawset( player.ID, 0 );
  145.                 Lottery[ player.ID ] = false;
  146.                 LotteryWon = false;
  147.                 LotteryCount = 0;
  148.             }
  149.         }
  150.     }
  151.  
  152.     for ( local i = 1; i < 60; i ++ )
  153.     {
  154.         Tickets[i] = false;
  155.         usedTickets.clear();
  156.     }
  157. }
  158.  
  159. function raffle()
  160. {
  161.     local rand = rand() % usedTickets.len();
  162.     return usedTickets[rand];
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement