Lottery system problem
#1

#include <a_samp>
#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
#define LOTTO_START 351492
#define LOTTO_DRAW 24
#define TICKET_COST 2500
new Jackpot = LOTTO_START;
new Numbers[100];
ublic OnFilterScriptInit()
{
SetTimer("UpdateJP", 30000, true);
SetTimer("Draw", LOTTO_DRAW*1000*60, true);
return 1;
}
forward UpdateJP();
public UpdateJP()
{
Jackpot = Jackpot + LOTTO_JACKPOT;
return 1;
}
dcmd_lotto(playerid, params[])
{
if(!strlen(params))
{
SendClientMessage(playerid, 0x62FF32FF, "***Lotto information***");
SendClientMessage(playerid, 0x62FF32FF, "Pick a number between 1 and 100 with /lotto [1-100]");
new str[75];
format(str, sizeof(str), "Current Jackpot is $%d!!!!", Jackpot);
SendClientMessage(playerid, 0x62FF32FF, str);
}
new Num = strval(params);
if(Numbers[Num] == 1)
{
new str[75];
format(str, sizeof(str), "Lotto number %d is already taken!", Num);
SendClientMessage(playerid, 0xE21F1FFF, str);
return 1;
}
if(GetPVarInt(playerid, "LottoNumber") != 0) return SendClientMessage(playerid, 0xE21F1FFF, "You have already a lotto number");
SetPVarInt(playerid, "LottoNumber", Num);
Numbers[Num] = 1;
GivePlayerMoney(playerid, -TICKET_COST);
new str[75];
format(str, sizeof(str), " Lotto ticket bought! Now you have number %d for the next draw", Num);
SendClientMessage(playerid, 0x62FF32FF, str);
format(str, sizeof(str), " Draws are showed in every %d minutes and the winners are announced. Current jackpot is $%d", LOTTO_DRAW, Jackpot);
Jackpot = Jackpot + LOTTO_JACKPOT;
SendClientMessage(playerid, 0x62FF32FF, str);
return 1;
}
forward Draw();
public Draw()
{
new Lnum = random(100) + 1; <------- line 54
new winner = -1;
for(new i; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(GetPVarInt(i, "LottoNumber") == Lnum) winner = i;
SetPVarInt(i, "LottoNumber", 0);
}
if(winner != -1)
{
new Pname[24];
GetPlayerName(winner, Pname, 24);
new str[100];
SendClientMessageToAll(0x62FF32FF, "****LOTTO INFORMATION****");
format(str, sizeof(str), "WE HAVE A WINNER! %s(%d) won $%d!!!!", Pname, winner, Jackpot);
SendClientMessageToAll(0x62FF32FF, str);
SendClientMessageToAll(0x62FF32FF, "Make sure you get a ticket for next draw /lotto [1-100]!!");
GivePlayerMoney(winner, Jackpot);
Jackpot = LOTTO_START;
}
if(winner == -1)
{
new str[100];
SendClientMessageToAll(0x62FF32FF, "****LOTTO INFORMATION****");
format(str, sizeof(str), "There was no lotto winner for this draw. The jackpot will go up to $%d!", Jackpot);
SendClientMessageToAll(0x62FF32FF, str);
SendClientMessageToAll(0x62FF32FF, "Make sure you get a ticket for next draw /lotto [1-100]!!");
}
for(new s; s<100; s++)
{
Numbers[s] = 0;
}
return 1;




{ compound statement not closed at the end of file (started at line 54) }
Reply
#2

Its a bit hard to understand it. use pawn code
Reply
#3

Quote:

#include <a_samp>
#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
#define LOTTO_START 351492
#define LOTTO_DRAW 24
#define TICKET_COST 2500
new Jackpot = LOTTO_START;
new Numbers[100];
public OnFilterScriptInit()
{
SetTimer("UpdateJP", 30000, true);
SetTimer("Draw", LOTTO_DRAW*1000*60, true);
return 1;
}
forward UpdateJP();
public UpdateJP()
{
Jackpot = Jackpot + LOTTO_JACKPOT;
return 1;
}
dcmd_lotto(playerid, params[])
{
if(!strlen(params))
{
SendClientMessage(playerid, 0x62FF32FF, "Pick A Number Between 1 and 30 /lotto [1-30]");
new str[75];
format(str, sizeof(str), "Current Jackpot is $%d", Jackpot);
SendClientMessage(playerid, 0x62FF32FF, str);
}
new Num = strval(params);
if(Numbers[Num] == 1)
{
new str[75];
format(str, sizeof(str), "Lotto Number %d is already Taken", Num);
SendClientMessage(playerid, 0xE21F1FFF, str);
return 1;
}
if(GetPVarInt(playerid, "LottoNumber") != 0) return SendClientMessage(playerid, 0xE21F1FFF, "You have Already A Lotto Ticket");
SetPVarInt(playerid, "LottoNumber", Num);
Numbers[Num] = 1;
GivePlayerMoney(playerid, -TICKET_COST);
new str[75];
format(str, sizeof(str), " Lotto Ticket Bought, Now you have Number %d For The Next Draw", Num);
SendClientMessage(playerid, 0x62FF32FF, str);
format(str, sizeof(str), " Draws are Showed In Every %d Minutes and The Winners are Announced. Current Jackpot is $%d", LOTTO_DRAW, Jackpot);
Jackpot = Jackpot + LOTTO_JACKPOT;
SendClientMessage(playerid, 0x62FF32FF, str);
return 1;
}
forward Draw();
public Draw()
{
new Lnum = random(100) + 1;
new winner = -1;
for(new i; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(GetPVarInt(i, "LottoNumber") == Lnum) winner = i;
SetPVarInt(i, "LottoNumber", 0);
}
if(winner != -1)
{
new Pname[24];
GetPlayerName(winner, Pname, 24);
new str[100];
format(str, sizeof(str), "(LOTTO WINNER) %s(%d) Won $%d", Pname, winner, Jackpot);
SendClientMessageToAll(0x62FF32FF, str);
SendClientMessageToAll(0x62FF32FF, "Make Sure You Get a Ticket For Next Draw /lotto [1-30]");
GivePlayerMoney(winner, Jackpot);
Jackpot = LOTTO_START;
}
if(winner == -1)
{
new str[100];
SendClientMessageToAll(0x62FF32FF, "****LOTTO INFORMATION****");
format(str, sizeof(str), "There Is No lotto Winner for This Draw. Currunt jackpot $%d", Jackpot);
SendClientMessageToAll(0x62FF32FF, str);
SendClientMessageToAll(0x62FF32FF, "Make Sure You Get a Ticket For Next Draw /lotto [1-30]");
}
for(new s; s<100; s++)
{
Numbers[s] = 0;
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(lotto, 5, cmdtext);
return 0;
}

Here You GO!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)