iJayce

Lottery script by Jayce

Feb 19th, 2016
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.93 KB | None | 0 0
  1. #define         FILTERSCRIPT
  2.  
  3. #include        <a_samp>
  4. #include        <sscanf2>
  5. #include        <iZCMD>
  6. #include        <YSI\y_timers>
  7. #include        <YSI\y_iterate>
  8. #define         COLOR_ANNOUNCE          0x00DEDAFF
  9.  
  10. stock hook_IsPlayerAdmin(playerid)
  11. {
  12.     new bool:IsAdmin = false;
  13.     IsAdmin = ( IsPlayerAdmin(playerid) ) ? true : false;
  14.     // IsAdmin = ( CallRemoteFunction("GetAdminLevel", "i", playerid) ) ? true : false;
  15.     return IsAdmin;
  16. }
  17. #if defined _ALS_IsPlayerAdmin
  18.     #undef IsPlayerAdmin
  19. #else
  20.     #define _ALS_IsPlayerAdmin
  21. #endif
  22. #define IsPlayerAdmin hook_IsPlayerAdmin
  23.  
  24. enum D_LOTTERY_DATA {
  25.     MoneyPrize,
  26.     ScorePrize,
  27.     bool:Hosted
  28. }
  29. stock const
  30.     LOTTERY_WIN_MSG[] = "[Lottery] %s (ID:%d) has won the lottery and earned $%s and %s score.",
  31.     LOTTERY_JOIN_MSG[] = "[Lottery] %s (ID:%d) has joined the lottery.",
  32.     LOTTERY_HOST_MSG[] = "[Lottery] A lottery event has started with prizes: $%s and %s score."
  33. ;
  34. new
  35.     Lottery[D_LOTTERY_DATA],
  36.     Iterator:LotteryPlayer<MAX_PLAYERS>
  37. ;
  38. timer LotteryDelay[60000]() {
  39.     Lottery[Hosted] = false;
  40.     new winner = Iter_Random(LotteryPlayer);
  41.     if( IsPlayerConnected(winner) ) {
  42.         new tmp[128],p_name[MAX_PLAYER_NAME];
  43.         GetPlayerName(winner, p_name, sizeof p_name);
  44.         GivePlayerMoney(winner, Lottery[MoneyPrize]);
  45.         SetPlayerScore(winner, GetPlayerScore(winner) + Lottery[ScorePrize]);
  46.         format(tmp, sizeof tmp, LOTTERY_WIN_MSG, p_name, winner, IntToStr(Lottery[MoneyPrize]), IntToStr(Lottery[ScorePrize]));
  47.         SendClientMessageToAll(COLOR_ANNOUNCE, tmp);
  48.     }
  49.     return true;
  50. }
  51. stock IntToStr(t) {
  52.     new tmp[24],d = -1;
  53.     valstr(tmp,t);
  54.     for(new i = strlen(tmp); i > 0; i--) {
  55.         d++;
  56.         if(d == 3) {
  57.             strins(tmp,",",i);
  58.             d = 0;
  59.         }
  60.     }
  61.     return tmp;
  62. }
  63. public OnPlayerDisconnect(playerid, reason) {
  64.     if(Iter_Contains(LotteryPlayer, playerid)) {
  65.         Iter_Remove(LotteryPlayer, playerid);
  66.     }
  67.     return true;
  68. }
  69. CMD:hostlottery(playerid, params[]) {
  70.     if(IsPlayerAdmin(playerid)) {
  71.         extract params -> new cash, score; else
  72.             return SendClientMessage(playerid, 0xFF0000FF, "USAGE: hostlottery [cash] [score]");
  73.         Lottery[MoneyPrize] = cash;
  74.         Lottery[ScorePrize] = score;
  75.         Lottery[Hosted] = true;
  76.         new tmp[128];
  77.         format(tmp, sizeof tmp, LOTTERY_HOST_MSG, IntToStr(Lottery[MoneyPrize]), IntToStr(Lottery[ScorePrize]));
  78.         SendClientMessageToAll(COLOR_ANNOUNCE, tmp);
  79.         defer LotteryDelay();
  80.         return true;
  81.     }
  82.     return false;
  83. }
  84. CMD:joinlottery(playerid) {
  85.     if(Iter_Contains(LotteryPlayer, playerid)) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: You have joined the lottery already.");
  86.     else if(!Lottery[Hosted]) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: There is no active lottery.");
  87.     else {
  88.         new tmp[128],p_name[MAX_PLAYER_NAME];
  89.         GetPlayerName(playerid, p_name, sizeof p_name);
  90.         format(tmp, sizeof tmp, LOTTERY_JOIN_MSG, p_name, playerid);
  91.         SendClientMessageToAll(COLOR_ANNOUNCE, tmp);
  92.         Iter_Add(LotteryPlayer, playerid);
  93.     }
  94.     return true;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment