Доброй ночи друзья , решил выложить для вас систему лотереи.
Автор - Я ?
И так , начнём
Добавляем команду
CMD:lotto(playerid, params[])
{
if(CommandOne[playerid] < 20)
return SendClientMessage(playerid,-1,"Купить билет можно лишь 20 раз , нужно ждать 1 час");
if(GetPlayerMoney(playerid) < 1500)
return SendClientMessage(playerid,COLOR_GREY,"Билет стоит 1500$");
new
lottonr;
if(sscanf(params, "d", lottonr))
return SendClientMessage(playerid,COLOR_WHITE,"ИНФО: /lotto [number]");
if(!(1 <= lottonr <= MAX_NUMBER_LOTTO))
return SendClientMessage(playerid,COLOR_GREY,"Номер билета не должен превышать "#MAX_NUMBER_LOTTO"!");
if(array_lottonr[lottonr] == true)
return SendClientMessage(playerid,COLOR_GREY,"Этот номер уже выкупили");
new
string[64];
format(string,sizeof(string),"Вы купили лотерейный билет под номером: %i",lottonr);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
GivePlayerMoney(playerid,-1500);
Bilet[playerid] = lottonr;
array_lottonr[lottonr] = true;
CommandOne[playerid] ++;
return 1;
}
Далее идём ко всем define и вставляем
#define MAX_NUMBER_LOTTO 80
и добавляем
new CommandOne[MAX_PLAYERS];
Далее идём туда , где у вас все forward'ы
и вставляем
forward Lotto(number);
forward LoadLoto();
forward SaveLoto();
Так-же добавляем еще одну глобальную переменную
new bool:array_lottonr[MAX_NUMBER_LOTTO + 1];
Перейдем к созданию самих пабликов , код ниже
public Lotto(number)
{
new JackpotFallen = 0;
new string[256];
new winner[MAX_PLAYER_NAME];
format(string,sizeof(string),"Новости лотто: Выигрышным номером является %i",number);
SCMA(COLOR_LIGHTBLUE,string);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(Bilet > 0)
{
if(Bilet == number)
{
JackpotFallen = 1;
GetPlayerName(i,winner,sizeof(winner));
format(string,sizeof(string), "Новости лотто: %s выигрывает джекпот %iр",winner,Jackpot);
SCMA(COLOR_LIGHTBLUE,string);
format(string,sizeof(string),"Вы выиграли %iр в лотто",Jackpot);
SendClientMessage(i,COLOR_YELLOW,string);
GivePlayerMoney(i,Jackpot);
}
else SendClientMessage(i,COLOR_LIGHTBLUE,"Вы ничего не выиграли.");
}
Bilet = 0;
}
if(JackpotFallen)
{
new rand = random(1250); rand += 1578;
Jackpot = rand;
SaveLoto();
format(string,sizeof(string),"Новости лотто: джекпот установлен на %i",Jackpot);
SCMA(COLOR_WHITE,string);
}
else
{
new rand = random(1500); rand += 2158;
Jackpot += rand;
SaveLoto();
format(string,sizeof(string),"Новости лотто: джекпот поднялся до %i",Jackpot);
SCMA(COLOR_WHITE,string);
}
return 1;
}
public LoadLoto()
{
new loadloto[16];
new strFromFile2[256];
new File:file = fopen("loto.ini",io_read);
if(file)
{
fread(file,strFromFile2);
Jackpot = strval(loadloto);
fclose(file);
}
else GameModeExit();
return 1;
}
public SaveLoto()
{
new s[256];
format(s,sizeof(s),"%d",Jackpot);
new File:file2 = fopen("loto.ini",io_write);
fwrite(file2,s);
fclose(file2);
return 1;
}
Далее мы идём к паблику/стоку PayDay(); , у вас может называться по другому (коротко , это паблик где происходит пейдей)
и вставляем
new randLoto = random(80);
if(randLoto < 77)
{
randLoto += 3;
}
Lotto(randLoto);
ВНИМАНИЕ! НЕ ЗАБЫВАЕМ СОЗДАТЬ В scriptfiles ФАЙЛ loto.ini , ИНАЧЕ СЕРВЕР НЕ ЗАПУСТИТСЯ!
Автор - Я ?
И так , начнём
Добавляем команду
CMD:lotto(playerid, params[])
{
if(CommandOne[playerid] < 20)
return SendClientMessage(playerid,-1,"Купить билет можно лишь 20 раз , нужно ждать 1 час");
if(GetPlayerMoney(playerid) < 1500)
return SendClientMessage(playerid,COLOR_GREY,"Билет стоит 1500$");
new
lottonr;
if(sscanf(params, "d", lottonr))
return SendClientMessage(playerid,COLOR_WHITE,"ИНФО: /lotto [number]");
if(!(1 <= lottonr <= MAX_NUMBER_LOTTO))
return SendClientMessage(playerid,COLOR_GREY,"Номер билета не должен превышать "#MAX_NUMBER_LOTTO"!");
if(array_lottonr[lottonr] == true)
return SendClientMessage(playerid,COLOR_GREY,"Этот номер уже выкупили");
new
string[64];
format(string,sizeof(string),"Вы купили лотерейный билет под номером: %i",lottonr);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
GivePlayerMoney(playerid,-1500);
Bilet[playerid] = lottonr;
array_lottonr[lottonr] = true;
CommandOne[playerid] ++;
return 1;
}
Далее идём ко всем define и вставляем
#define MAX_NUMBER_LOTTO 80
и добавляем
new CommandOne[MAX_PLAYERS];
Далее идём туда , где у вас все forward'ы
и вставляем
forward Lotto(number);
forward LoadLoto();
forward SaveLoto();
Так-же добавляем еще одну глобальную переменную
new bool:array_lottonr[MAX_NUMBER_LOTTO + 1];
Перейдем к созданию самих пабликов , код ниже
public Lotto(number)
{
new JackpotFallen = 0;
new string[256];
new winner[MAX_PLAYER_NAME];
format(string,sizeof(string),"Новости лотто: Выигрышным номером является %i",number);
SCMA(COLOR_LIGHTBLUE,string);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(Bilet > 0)
{
if(Bilet == number)
{
JackpotFallen = 1;
GetPlayerName(i,winner,sizeof(winner));
format(string,sizeof(string), "Новости лотто: %s выигрывает джекпот %iр",winner,Jackpot);
SCMA(COLOR_LIGHTBLUE,string);
format(string,sizeof(string),"Вы выиграли %iр в лотто",Jackpot);
SendClientMessage(i,COLOR_YELLOW,string);
GivePlayerMoney(i,Jackpot);
}
else SendClientMessage(i,COLOR_LIGHTBLUE,"Вы ничего не выиграли.");
}
Bilet = 0;
}
if(JackpotFallen)
{
new rand = random(1250); rand += 1578;
Jackpot = rand;
SaveLoto();
format(string,sizeof(string),"Новости лотто: джекпот установлен на %i",Jackpot);
SCMA(COLOR_WHITE,string);
}
else
{
new rand = random(1500); rand += 2158;
Jackpot += rand;
SaveLoto();
format(string,sizeof(string),"Новости лотто: джекпот поднялся до %i",Jackpot);
SCMA(COLOR_WHITE,string);
}
return 1;
}
public LoadLoto()
{
new loadloto[16];
new strFromFile2[256];
new File:file = fopen("loto.ini",io_read);
if(file)
{
fread(file,strFromFile2);
Jackpot = strval(loadloto);
fclose(file);
}
else GameModeExit();
return 1;
}
public SaveLoto()
{
new s[256];
format(s,sizeof(s),"%d",Jackpot);
new File:file2 = fopen("loto.ini",io_write);
fwrite(file2,s);
fclose(file2);
return 1;
}
Далее мы идём к паблику/стоку PayDay(); , у вас может называться по другому (коротко , это паблик где происходит пейдей)
и вставляем
new randLoto = random(80);
if(randLoto < 77)
{
randLoto += 3;
}
Lotto(randLoto);
Код:
for (new i; i <= MAX_NUMBER_LOTTO; i++)
array_lottonr[i] = false;
}
}
}
for(new i; i < sizeof(OneCommand); i++)
CommandOne[i] = 0;
ВНИМАНИЕ! НЕ ЗАБЫВАЕМ СОЗДАТЬ В scriptfiles ФАЙЛ loto.ini , ИНАЧЕ СЕРВЕР НЕ ЗАПУСТИТСЯ!