SA-MP Forums

Go Back   SA-MP Forums > SA-MP Scripting and Plugins > Scripting Help > Tutorials

Reply
 
Thread Tools Display Modes
Old 15/07/2010, 11:35 AM   #1
[HiC]TheKiller
High-roller
 
Join Date: Mar 2008
Location: New Zealand
Posts: 3,098
Reputation: 406
Default [TUT]Lotto script

[TUT]Lotto script

Alot of people where asking for this and it's pretty basic so here it is .

Lets start with the defines (You can change most of them to what suits you)

pawn Code:
#include <a_samp> //You need the a_samp include in almost every script.
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 //DCMD
#define LOTTO_JACKPOT 10000   //How much it goes up every 30 seconds or whenever someone buys a ticket
#define LOTTO_START      200000 //How much the lotto starts off at every draw
#define LOTTO_DRAW      10         //How many minutes between each lotto draw
#define TICKET_COST      1000     //How much a ticket will cost
new Jackpot = LOTTO_START;                                 //Jackpot amount
new Numbers[100];                      //So 2 people don't get the same #

Now we are going to add the timers for the lotto timers (Jackpot and Update).

pawn Code:
public OnFilterScriptInit()
{
    SetTimer("UpdateJP", 30000, true); //Updates the jackpot
    SetTimer("Draw", LOTTO_DRAW*1000*60, true); //Updates the jackpot
    return 1;
}

forward UpdateJP(); //Always forward a timer

public UpdateJP()
{
    Jackpot = Jackpot + LOTTO_JACKPOT; //Ads to the lotto jackpot
    return 1;
}

Now that we have that out of the way, we are going to do the command in DCMD

pawn Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
    dcmd(lotto, 5, cmdtext);
    return 0;
}

dcmd_lotto(playerid, params[])
{
    if(!strlen(params)) //If the player doesn't put a nubmer
    {
        SendClientMessage(playerid, 0x62FF32FF, "***Lotto information***"); //Lotto info
        SendClientMessage(playerid, 0x62FF32FF, "Pick a number between 1 and 100 with /lotto [1-100]"); //Lotto info
        new str[75]; //Creates the string
        format(str, sizeof(str), "Current Jackpot is $%d!!!!", Jackpot); //Formats the jackpot string
        SendClientMessage(playerid, 0x62FF32FF, str); //Shows the current jackpot
    }
    new Num = strval(params); //Makes the param that the player entered into a intiger
    if(Numbers[Num] == 1) //If the number is used
    {
        new str[75]; //Makes a variable
        format(str, sizeof(str), "Lotto number %d is already taken!", Num); //Formats a str
        SendClientMessage(playerid, 0xE21F1FFF, str); //Sends the message
        return 1;
    }
    if(GetPVarInt(playerid, "LottoNumber") != 0) return SendClientMessage(playerid, 0xE21F1FFF, "You have already got a lotto number");
    SetPVarInt(playerid, "LottoNumber", Num); //Sets the players number
    Numbers[Num] = 1; //Number is used
    GivePlayerMoney(playerid, -TICKET_COST); //Takes away the ticket cost.
    new str[75];
    format(str, sizeof(str), " Lotto ticket brought! You now have number %d for the next draw", Num);
    SendClientMessage(playerid, 0x62FF32FF, str); //Lotto info
    format(str, sizeof(str), " Draws are held every %d minutes and the winners are announced. Current jackpot is $%d", LOTTO_DRAW, Jackpot);
    Jackpot = Jackpot + LOTTO_JACKPOT; //Ads to the lotto jackpot
    SendClientMessage(playerid, 0x62FF32FF, str); //Lotto info
    return 1;
}

Now for the actual lotto draw (Picks a random number between 0 and 100, checks against all players numbers and if the player has that number they win).

pawn Code:
forward Draw();
public Draw()
{
    new Lnum = random(100) + 1; //Picks a random number
    new winner = -1; //Winners ID variable
    for(new i; i<MAX_PLAYERS; i++) //checks through all players
    {
        if(!IsPlayerConnected(i)) continue; //Players not connected
        if(GetPVarInt(i, "LottoNumber") == Lnum) winner = i; //If the players number is the winning number
        SetPVarInt(i, "LottoNumber", 0); //Resets the number
    }
    if(winner != -1) //If there was a winner
    {
        new Pname[24];
        GetPlayerName(winner, Pname, 24);
        new str[100];
        SendClientMessageToAll(0x62FF32FF, "****LOTTO INFORMATION****"); //Lotto info
        format(str, sizeof(str), "WE HAVE A WINNER! %s(%d) won $%d!!!!", Pname, winner, Jackpot);
        SendClientMessageToAll(0x62FF32FF, str); //Lotto info
        SendClientMessageToAll(0x62FF32FF, "Make sure you get a ticket for next draw /lotto [1-100]!!"); //Lotto info
        GivePlayerMoney(winner, Jackpot); //Gives the winner the cash
        Jackpot = LOTTO_START; //Resets the jackpot
    }
    if(winner == -1) //No winner
    {
                new str[100];
        SendClientMessageToAll(0x62FF32FF, "****LOTTO INFORMATION****"); //Lotto info
        format(str, sizeof(str), "There was no lotto winner for this draw. The jackpot will go up to $%d!", Jackpot);
        SendClientMessageToAll(0x62FF32FF, str); //Lotto info
        SendClientMessageToAll(0x62FF32FF, "Make sure you get a ticket for next draw /lotto [1-100]!!");
    }
    for(new s; s<100; s++)
    {
        Numbers[s] = 0; //Resets all numbers so they are usable.
    }
    return 1;
}

Hope you enjoyed this tutorial, feal free to post bugs/comments .
__________________
People seem to enjoy negitive repping me for topics that I made in 2009.
Therefore, if you want to view my releases, you can go here.

Skype: TheKiller@dr.com
I do NOT script for cash. Add me on MSN if you need help with small issues.

Last edited by [HiC]TheKiller; 12/10/2010 at 06:52 PM.
[HiC]TheKiller is offline   Reply With Quote
Old 15/07/2010, 11:37 AM   #2
willsuckformoney
High-roller
 
willsuckformoney's Avatar
 
Join Date: Dec 2009
Posts: 1,505
Reputation: 65
Default Re: [TUT]Lotto script

moO! tanks and FIRST MOOWNED
willsuckformoney is offline   Reply With Quote
Old 15/07/2010, 11:58 AM   #3
jamesbond007
Banned
 
Join Date: Oct 2009
Location: Canadia
Posts: 663
Reputation: 37
Default Re: [TUT]Lotto script

a simple and stupid mistake will ruin everything

Code:
dcmd(lotto, 4, cmdtext);
jamesbond007 is offline   Reply With Quote
Old 15/07/2010, 12:00 PM   #4
[HiC]TheKiller
High-roller
 
Join Date: Mar 2008
Location: New Zealand
Posts: 3,098
Reputation: 406
Default Re: [TUT]Lotto script

Quote:
Originally Posted by jamesbond007 View Post
a simple and stupid mistake will ruin everything

Code:
dcmd(lotto, 4, cmdtext);
Yea,h my bad, tired as lol.
__________________
People seem to enjoy negitive repping me for topics that I made in 2009.
Therefore, if you want to view my releases, you can go here.

Skype: TheKiller@dr.com
I do NOT script for cash. Add me on MSN if you need help with small issues.
[HiC]TheKiller is offline   Reply With Quote
Old 15/07/2010, 12:02 PM   #5
jamesbond007
Banned
 
Join Date: Oct 2009
Location: Canadia
Posts: 663
Reputation: 37
Default Re: [TUT]Lotto script

other then that awesome script! good tutorial i will use it sometime soon!
jamesbond007 is offline   Reply With Quote
Old 15/07/2010, 01:22 PM   #6
Aleluja
Big Clucker
 
Join Date: Jul 2010
Location: Croatia
Posts: 192
Reputation: 0
Default Re: [TUT]Lotto script

nice tutorial TheKiller
Aleluja is offline   Reply With Quote
Old 15/07/2010, 02:07 PM   #7
ViruZZzZ_ChiLLL
High-roller
 
ViruZZzZ_ChiLLL's Avatar
 
Join Date: Aug 2009
Location: I don't know
Posts: 1,701
Reputation: 8
Default Re: [TUT]Lotto script

Another awesome and useful tutorial [HiC]TheKiller :P
__________________


ViruZZzZ_ChiLLL is offline   Reply With Quote
Old 16/07/2010, 02:52 AM   #8
Kar
High-roller
 
Join Date: May 2010
Location: Black Asylum
Posts: 2,895
Reputation: 286
Default Re: [TUT]Lotto script

wow finally this is exactly what i f-***in wanted
Kar is offline   Reply With Quote
Old 16/07/2010, 10:08 AM   #9
FireCat
Banned
 
Join Date: Jul 2010
Posts: 2,470
Reputation: 596
Default Re: [TUT]Lotto script

nice thekiller
FireCat is offline   Reply With Quote
Old 17/07/2010, 04:02 PM   #10
Amit_B
Gangsta
 
Amit_B's Avatar
 
Join Date: Nov 2007
Location: Israel
Posts: 682
Reputation: 53
Default Re: [TUT]Lotto script

Where's the tutorial?
You've just posted your own lotto system and teached where to put every code in the script.
Amit_B is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT. The time now is 12:06 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.