Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

/lotto | Система лотереи

Статус
В этой теме нельзя размещать новые ответы.

Scally Milano

Умник
Доброго времени суток , решил выложить вам систему лотереи.
АВТОР: Stibs (Переделал почти всё - Я)
И так , начнём , переходим туда где у вас все forward'ы и вставляем

Ко всем define #define MAX_NUMBER_LOTTO 80
#define SCM SendClientMessage
#define COLOR_LIGHTBLUE 0x6495EDFF

и создаем глобальные переменные
new CommandOne[MAX_PLAYERS];
new bool:array_lottonr[MAX_NUMBER_LOTTO + 1];
new Bilet[MAX_PLAYERS];
new Jackpot = 0;


PHP:
forward Lotto(number);
forward LoadLoto();
forward SaveLoto();
Создадим public'и


PHP:
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[i] > 0)
        {
            if(Bilet[i] == 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[i] = 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;
}
Дальше идем в OnGameModeInit и вставляем




Далее ищем в моде сток/паблик где у вас происходит payday на сервере

и вставляем туда


PHP:
new randLoto = random(80);
    if(randLoto < 77)
    {
        randLoto += 3;
    }
    Lotto(randLoto);
for (new i; i <= MAX_NUMBER_LOTTO; i++)
array_lottonr = false;

for(new i; i < sizeof(CommandOne); i++)
CommandOne = 0;

Перейдем к созданию самой команды , вот код команды


PHP:
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;
}

Загружаем мод на сервер , перезагружаем , заходим и делаем payday , всё, система лотереи готова. От плюсика не откажусь
ВНИМАНИЕ! НЕ ЗАБУДЬТЕ СОЗДАТЬ В SCRIPTFILES loto.ini ИНАЧЕ СЕРВЕР НЕ ВКЛЮЧИТСЯ

P.S Если нужна будет команда на стандартном командном процессоре , то пишите сюда в тему :)
UPD 2.07.2021: Обновил систему на более оптимальную
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу