15.07.2010, 11:35
(
Последний раз редактировалось [HiC]TheKiller; 12.10.2010 в 18:52.
)
[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 Код:
#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 #
pawn Код:
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;
}
pawn Код:
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;
}
pawn Код:
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;
}